Docker-01-容器技术和Docker简介

一、容器技术

1.1 容器技术的历史

1、在最开始,所有服务都时直接部署在物理机上的,具有如下缺点:

  • 部署非常慢
  • 成本非常高
  • 资源浪费
  • 难于迁移和扩展
  • 可能会被限定硬件厂商

2、之后出现虚拟化技术,虚拟机通过Hypervisor层实现资源的调度

  • 一个物理机可以部署多个app
  • 每个app运行在一个虚拟机里面

虚拟化的优点:

  • 资源池:一个物理机的资源分配到了不同的虚拟机里
  • 很容器扩展:容器增加物理机和虚拟机
  • 很容易云化:AWS,阿里云等

虚拟化的局限性:

  • 每一个虚拟机都是一个完整的操作系统,要给其分配资源。当虚拟机数量增多时,操作系统本身消耗的资源势必增多!

3、容器技术的出现

什么是容器技术?

  • 对软件和其依赖的标准化打包
  • 应用之间相互隔离,效果略低于虚拟机之间的隔离
  • 共享一个OS Kernel
  • 可以运行在很多主流操作系统上

容器和虚拟机的区别:

容器解决了什么问题?

  • 提供app的打包,环境一致性的问题!!
  • 解决了开发和运维之间的矛盾

容器技术的发展历程:

二、Docker简介

2.1 什么是docker?

  • Docker是容器技术的一种实现!
  • Docker 是基于Go语言实现的开源项目,诞生于2013年初,最初的发起者dotClound公司,Docker自然开源后受到广泛关注;
  • Docker项目目前已经加入Linux的基金会,遵循Apache2.0协议,全部开源代码均在https://gitHub.com/docker/docker上;
  • Linux的操作系统的支持:Redhat RHEL 6.5/CentOS 6.5往上的操作系统,Ubuntu14.04操作系统,都默认带有docker的安装包;
  • 与Docker的合作方:Google的PaaS(platform as a Service)平台及服务产品,微软的云平台Azure,亚马逊的AWS EC2 Container
  • Docker 的主要目的:Build、Ship and Run Any APP Anywhere,即通过对应用组件的封装(Packing)、分发(Dispatcher)、部署(Deployment) 、运行(Runtime) 等生命周期的管理,达到一次封装到处运行;
  • 组件可以是一个web的应用,也可以是一套数据库,甚至是一个操作系统;
  • Docker 基于Linux的多项开源技术提供了高效敏捷和轻量级的容器方案,并且支持多种主流平台(Paas) 和本地系统上的部署。

2.2 docker与虚拟机比较

特性 容器 虚拟机
启动速度 秒级 分钟级
硬盘使用 一般MB 一般GB
性能 接近原生 相对弱于
系统支持 单机支持上千个容器 一般几十个
隔离性 安全隔离 完全隔离

2.3 docker的引擎

docker引擎是一个c/s结构的应用:

  • Server是一个常驻进程;
  • REST API 实现了client和server间的交互协议;
  • CLI实现容器和镜像的管理,为用户提供统一的操作界面。

2.4 docker的架构

Docker使用C/S架构,Client 通过接口与Server进程通信实现容器的构建,运行和发布。client和server可以运行在同一台集群,也可以通过跨主机实现远程通信。

2.5 docker的核心概念

  • 镜像(Image)

  镜像是只读的,镜像中包含需要运行的文件(提供容器运行时所需的程序、库、资源、配置等文件,还包含了一些为运行时准备的一些配置参数)。镜像用来创建container,一个镜像可以运行多个container;镜像可以通过Dockerfile创建,也可以从Docker hub/registry上下载。

  • 容器(Container)

  Docker的运行组件,启动一个镜像就是一个容器,容器是一个隔离环境,多个容器之间不会相互影响,保证容器中的程序运行在一个相对安全的环境中。

  • 仓库(Repository)

  从认识上来说,就好像软件包上传下载站,有各种软件的不同版本被上传供用户下载,共享和管理Docker镜像,官方地址为:https://registry.hub.docker.com/

2.6 Docker底层核心技术

1、Namespaces

  • 做隔离pid,net,ipc,mnt,uts

2、Control groups

  • 做资源限制

3、Union file systems

  • 做Container和image分层


参考文章:https://blog.csdn.net/huangjun0210/article/details/85680586#2_Docker_10

原文地址:https://www.cnblogs.com/liuguangjiji/p/10612272.html

时间: 2024-08-30 05:21:46

Docker-01-容器技术和Docker简介的相关文章

容器技术|Docker三剑客之docker-compose

三剑客简介 docker-machine docker技术是基于Linux内核的cgroup技术实现的,那么问题来了,在非Linux平台上是否就不能使用docker技术了呢?答案是可以的,不过显然需要借助虚拟机去模拟出Linux环境来. docker-machine就是docker公司官方提出的,用于在各种平台上快速创建具有docker服务的虚拟机的技术,甚至可以通过指定driver来定制虚拟机的实现原理(一般是virtualbox). docker-compose docker镜像在创建之后,

容器技术|Docker三剑客之docker-machine

docker-machine是什么? ocker-machine就是docker公司官方提出的,用于在各种平台上快速创建具有docker服务的虚拟机的技术,甚至可以通过指定driver来定制虚拟机的实现原理(一般是virtualbox). Docker 与 Docker Machine 的区别 Docker 是一个 Client-Server 架构的应用,Docker是大家对Docker Engine简称. Docker包括以下三个部分: 1.Docker daemon 2.一套与 Docker

Linux容器技术和docker

发展历程: 容器技术最早出现在FreeBSD上叫做 jail,将一个进程放入jail中运行,不管这个进程在其中发生怎样的错误都不会影响到系统上其他进程的运行 jail技术在Linux中的实现叫做vserver,vserver所实现的功能体现为chroot namespaces: 容器技术出现的主要目的是为了"资源隔离" 资源隔离包括: 名称 描述 内核版本 UTS 主机名和域名的隔离 2.6.19 Mount 文件系统的隔离 2.4.19 IPC 进程间通信隔离 2.6.19 PID

Docker学习笔记(8-1)容器技术历史

学习目标: 历史上的容器 1982 chroot  进程和文件系统 2007 virtuozzo windows平台 2008 lxc          linux 2012 warden   linux  cloudfoundry 2013 docker    linux 容器技术与云计算 云计算的基础技术 资源隔离 cpu:cpu时间片.cpu核数 内存:物理内存.swap交换区存储 磁盘:磁盘容量.io.inode 网络:网络栈.网络带宽 资源分配 保留分配 设定上限 资源弹性扩展 容器的

Docker 组件如何协作?- 每天5分钟玩转容器技术(8)

还记得我们运行的第一个容器吗?现在通过它来体会一下 Docker 各个组件是如何协作的. 容器启动过程如下: Docker 客户端执行 docker run 命令. Docker daemon 发现本地没有 httpd 镜像. daemon 从 Docker Hub 下载镜像. 下载完成,镜像 httpd 被保存到本地. Docker daemon 启动容器. docker images 可以查看到 httpd 已经下载到本地. docker ps 或者 docker container ls 

Docker 清理容器 log 日志

原文 Docker 清理容器 log 日志 docker logs <容器ID> 是常用命令,来查看容器运行日志,但时间长了之后,就会发现越来越慢,log 太多了,这时就需要清理一下. 先查看日志文件位置: $ docker inspect --format='{{.LogPath}}' <容器ID> /var/lib/docker/containers/545e06a75cc0ac8f8c1e6f7217455660187124a3eed031b5eb2f6f0edeb426cb

Docker Compose容器编排

本章知识点概括: Docker Compose容器编排构建自动发现的Docker服务架构实现容器服务自动加入Nginx集群 **Docker Compose容器编排功能** Docker compose的前身是Fig,它是一个定义及运行多个docker容器的工具 使用Docker Compose不再需要使用shell脚本来启动容器 Docker Compose非常适合组合是同多个容器进行开发的场景 可以执行多个容器的操作 **Docker Compose容器编排** YAML是一种标记语言很直观

容器生态系统 - 每天5分钟玩转容器技术(2)

对于像容器这类平台级别的技术,通常涉及的知识范围会很广,相关的软件,解决方案也会很多,初学者往往容易迷失. 那怎么办呢? 我们可以从生活经验中寻找答案.当我们去陌生城市旅游想了解一下这个城市一般我们会怎么做? 我想大部分人应该会打开手机看一下这个城市的地图: 城市大概的位置和地理形状是什么? 都由哪几个区或县组成? 主要的交通干道是哪几条? 同样的道理,学习容器技术我们可以先从天上鸟瞰一下: 容器生态系统包含哪些不同层次的技术? 不同技术之间是什么关系? 哪些是核心技术哪些是辅助技术? 首先得对

第五章 云原生与容器技术

第一节 独角兽成功秘诀 成功秘诀 ·Speed of innovation-天下武功,唯快不破 ·Always-available services-随时.随地可用 ·Web scale-从0到1,快速扩展 ·Mobile-centric user experiences-移动为王又快又好! 第二节 云原生和现代应用12范式 现代应用的十二范式(The Twelve-Factor App) 1.基准代码:一份基准代码,多份部署.基准代码和应用之间总是保持一一对应的关系.所有部署的基准代码相同,但