Open PI-KA-CHU opened 5 years ago
Docker是使用google公司推出的GO语言进行开发实现,于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术,由于隔离的进程独立于宿主和其他隔离的进程,因此称为容器。
GO语言
进程
封装隔离
操作系统层面
Docker在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护,使得Docker比虚拟技术更为轻便、快捷。
快
Dockerfile
持续部署
自动部署
镜像(Image):一个特殊的文件系统(类)
内核
用户空间
root文件系统
程序、库、资源、配置
配置参数
不包含任何动态数据
分层存储的架构
多层文件系统
每一层构建后就不再改变
容器(Container):镜像运行时的实体(实例)
镜像是静态的定义,容器是运行时的实体
容器的实质是进程
存储层
数据卷(Volume)
绑定宿主目录
仓库(Repository):集中存放镜像文件的地方(代码管理)
集中处理、分发镜像
Docker Registry
每个标签对应一个镜像
标签通常就对应软件的各个版本
<仓库名>:<标签>
latest
Docker的运行过程:
五、参考
Docker的基本概念
一、什么是Docker
Docker是使用google公司推出的
GO语言
进行开发实现,于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程
进行封装隔离
,属于操作系统层面
的虚拟化技术,由于隔离的进程独立于宿主和其他隔离的进程,因此称为容器。Docker在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护,使得Docker比虚拟技术更为轻便、快捷。
二、Docker与VMware
2.1、Docker与VMware的区别
快
很多2.2、Docker的优点(为什么使用Docker)
Dockerfile
来进行镜像构建,并结合 持续集成(Continuous Integration) 系统进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合持续部署
(Continuous Delivery/Deployment) 系统进行自动部署
。三、Docker的三大基本概念
镜像(Image):一个特殊的文件系统(类)
内核
和用户空间
,操作系统启动后,会挂载root文件系统
为其提供用户空间支持,而Docker(Image),就相当于一个root文件系统。程序、库、资源、配置
等文件外,还包含了一些为运行时准备的一些配置参数
(如匿名卷、环境变量、用户等)。 镜像不包含任何动态数据
,其内容在构建之后也不会被改变。分层存储的架构
(便于复用、定制,类似于继承),实际有多层文件系统
联合组成。镜像在构建时,会一层一层的构建,前一层是后一层的基础,每一层构建后就不再改变
,后一层的改变只发生在这一层(即删除上一层只是在本层进行标识)容器(Container):镜像运行时的实体(实例)
镜像是静态的定义,容器是运行时的实体
,可以被创建、启动、停止、运行和暂停等。容器的实质是进程
,但与直接在宿主执行的进程不同,其拥有独立的命名空间,而且使用的也是分层存储。存储层
的生命周期和容器一样,容器消亡时其存储层也随之消亡,即存储层的数据都会随着容器的删除而丢失,因此对于文件的写入操作,都应该用数据卷(Volume)
、或者绑定宿主目录
,这些操作会跳转存储层直接对宿主进行读写,其性能和稳定性更高,容器删除后也不会消失,容器的存储层应保持无状态。仓库(Repository):集中存放镜像文件的地方(代码管理)
集中处理、分发镜像
的服务,Docker Registry
就是这样的服务。每个标签对应一个镜像
,镜像仓库是用来集中存放镜像仓库的地方,类似与代码仓库。标签通常就对应软件的各个版本
,可以通过<仓库名>:<标签>
来指定哪个版本的镜像,没有指定标签的话就默认latest
。四、Build、Ship、Run
Docker的运行过程:
五、参考