1. Docker 简介编辑
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
2. Docker 架构编辑
1)Docker daemon( Docker 守护进程):
Docker daemon 是一个运行在宿主机(DOCKER-HOST)的后台进程,可通过 Docker 客户端与之通信。
2)Client( Docker 客户端):
Docker 客户端是 Docker 的用户界面,它可以接受用户命令和配置标识,并与 Docker daemon 通信。图中 docker build 等都是Docker 的相关命令。
3)Images(Docker 镜像):
操作系统分为内核和用户空间,对于 Linux 而言,内核启动后,会挂载 root 文件系统为其提供用户空间支持。而 Docker 镜像就相当于是一个 root 文件系统。
镜像是只读的,镜像中包含有需要运行的文件。镜像用来创建 container ,一个镜像可以运行多个 container 。镜像可以通过 Dockerfile 创建,也可以从 Docker hub/registry 上下载。
4)Container(容器):
镜像和容器的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
5)Registry :
Docker Registry 是一个集中存储与分发镜像的服务。构建完 Docker 镜像后,就可在当前宿主机上运行。但如果想要在其他机器上运行这个镜像,就需要手动复制。此时可借助 Docker Registry 来避免镜像的手动复制。
一个 Docker Registry 可包含多个 Docker 仓库,每个仓库可包含多个镜像标签,每个标签对应一个 Docker 镜像。这跟 Maven 的仓库有点类似,如果把 Docker Registry 比作 Maven 仓库的话,那么 Docker 仓库就可理解为某 JAR 包的路径,而镜像标签则可理解为 JAR 包的版本号。