Docker

Docker

Docker 是最广泛使用的容器技术,也是大多数人在引用容器时的意思。虽然还有其他开源容器技术(如 CoreOS 的 rkt)和大型公司构建自己的容器引擎(如谷歌的 lmctfy),但 Docker 已成为容器化的行业标准。它仍然建立在 Linux 内核和最近的 Windows 提供的 cgroups 和命名空间之上。

镜像与容器

Docker 容器由多层镜像组成,二进制文件一起打包到一个包中。基本镜像包含容器的操作系统,该操作系统可以与主机的操作系统不同。容器的操作系统是镜像形式。这不是主机上的完整操作系统,不同之处在于镜像只是操作系统的文件系统和二进制文件,而完整的操作系统包括文件系统,二进制文件和内核。在基础镜像的顶部是多个镜像,每个镜像构建容器的一部分。例如,在基本镜像的顶部可以是包含 apt-get 依赖性的镜像。最重要的可能是包含应用程序二进制文件的镜像,依此类推。

由哈希标识的每个镜像只是构成容器的许多可能镜像层之一。但是,容器仅由其顶级镜像标识,该镜像具有对父镜像的引用。此处显示的两个顶级镜像(镜像 1 和镜像 2)共享前三个图层。镜像 2 具有两个附加的配置相关层,但与镜像 1 共享相同的父镜像。引导容器时,将从 repo 下载镜像及其父镜像,创建 cgroup 和命名空间,并使用该镜像创建虚拟环境。在容器内,镜像中指定的文件和二进制文件似乎是整个计算机中的唯一文件。然后启动容器的主进程,并将容器视为活动状态。