docker入门到实战(3)基本概念

Docker Client 客户端 / Docker Daemon 守护进程

docker是CS架构,Docker Daemon守护进程即为服务端

客户端向守护进程发起请求,既可以在本地也可以在远程

docker入门到实战(3)基本概念_第1张图片
docker实战入门(3)基本概念

Docker Image 镜像

镜像是容器的基石,就像容器的源代码,保存了用于启动容器的各项条件和配置

docker的镜像是一个层叠的只读文件系统,最底端是一个引导文件系统(bootfs),这很像典型的linux的引导文件系统,docker用户几乎永远不会和引导文件系统有交互,实际上当一个容器启动后将会被移动到内存中,而引导文件系统将会被卸载。而docker镜像的第二层是root文件系统(rootfs),root文件系统可以是一种或者多种操作系统,比如ubuntu或者centos,在传统的文件系统中,root文件系统会最先以只读的方式加载,当引导结束并完成完整性检查之后它才会被切换到读写模式。但是在docker中,rootfs永远是只读状态。 并且docker利用联合加载技术(union mount)又会在rootfs之上加载更多的只读文件系统。联合加载指的是一次同时加载多个文件系统,但是在外面看起来只能看到一个文件系统,联合加载会将各层文件系统叠加在一起,这样最终的文件系统会包含所有的底层文件和目录,docker将这样的文件系统称为镜像。

docker入门到实战(3)基本概念_第2张图片
docker实战入门(3)基本概念

Docker Container 容器

容器通过镜像来启动,容器是镜像的执行单元,如果说镜像是docker生命周期中的构建和打包阶段,那么容器则是启动和执行阶段。当一个容器启动时,docker会在该镜像的最顶层加载一个可写的文件层,我们在docker中运行的程序就是在这个层中执行的。docker第一次启动一个容器时,初始的读写层是空的,当文件系统发生变化时,这些变化都会应用在这一层上。比如如果想修改一个文件,这个文件首先会从该读写层下面的只读层复制到该读写层,该文件的只读版本依然存在,但是已经被读写层中的该文件副本所隐藏,这就是docker中的一个重要技术写时复制(copy on write).

每个只读镜像层都是只读的,并且以后永远不会变化,当创建一个新容器时docker会构建出一个镜像栈,在栈的最顶层添加可写层,这个可写层加上下面的镜像层以及一些配置数据就构成了一个容器。容器的这些特点加上镜像的分层框架使我们可以快速构建镜像,并允许包含我们自己应用程序的容器。

docker入门到实战(3)基本概念_第3张图片
docker实战入门(3)基本概念

Docker Registry仓库

docker用仓库保存用户构建的镜像,仓库分为公有和私有两种,docker Hub是docker官方的公有仓库。我们可以通过这个网站查找我们需要的镜像为我们节省构建镜像的时间。

docker入门到实战(3)基本概念_第4张图片
docker实战入门(3)基本概念

你可能感兴趣的:(docker入门到实战(3)基本概念)