1.Docker 系统架构
Docker daemon:守护进程。通过 docker daemon 命令启动,它负责容器的创建、运行和监控,还负责镜像的构建和储存。
Clinet:客户端。通过 HTTP 和 Docker 守护进程通信。
Registry:寄存服务。负责存储和发布镜像。
1.1.底层技术
cgroups,负责管理容器使用的资源(例如 CPU 和内存的使用)。
namespace,负责容器之间的隔离,确保系统的其他部分与容器的文件系统、主机名、用户、网络和进程都是分开的。
1.2.周边技术
网络连接,通过 Docker 的联网插件结构,用户可以用其他方案取代 Overlay 驱动程序。
服务发现,解决方案包括 Consul、SkyDNS。
服务编排和群集管理, Kubernets。
1.3.Dockerfile 指令
ADD,从构建环境的上下文或远程 URL 复制文件到镜像。添加本地归档文件会自动解压。一般使用相对简单的 COPY 指令复制构建文件和目录。
CMD,当容器启动时执行指定的指令。如果定义了 ENTRYPOINT ,该指令将被解释为 ENTRYPOINT 的参数(确保使用 exec 格式)。
COPY,复制文件到镜像。它有2中方式,COPY src dest 以及 COPY [ "src","dest" ],如果路径中有空格,必须使用 JSON 数组的格式。
ENTRYPOINT,设置一个于容器启动时运行的可执行文件。
ENV,设置镜像内的环境变量,这些变量可以被随后的指令引用。
EXPOSE,向 Docker 表示该容器将会有一个进程监听所指定的端口。
FROM,设置 Dockerfile 使用的基础镜像,随后的指令皆执行于这个镜像上。
MAINTAINER,镜像作者的元数据。
ONBUILD,指定当镜像被用作另一个镜像的基础镜像时将会执行的指令。
RUN,在容器执行指定的指令,并把结果保存下来。
USER,设置任何后续的 RUN、CMD 或 ENTRYPOINT 指令执行时所用的用户。
VOLUME,指定为数据卷的文件或目录。如果该文件或目录已经在镜像中存在,当容器启动时,它会被复制到这个卷;如果提供了多个参数,会被解释成多个数据卷。
WORKDIR,对任何后续的 RUN、CMD、ENTRYPOINT、ADD 或 COPY 指令设置工作目录。
1.4.容器互联
其中 -p 8000:80 将主机的 8000 端口转发到容器的 80 端口。或者可以使用 -P 选项让 Docker 自动选择一个主机上未使用的端口。
容器间的连接主机网络无法看见。连接的初始化通过 docker run 传入 --link CONTAINER:alias 参数,其中 CONTAINER 是目标容器的名称,而 alias 是主容器用来称呼目标容器的一个本地名称。
使用 Docker 的连接也会把目标容器的别名和 ID 添加到主容器的 /etc/hosts,允许主容器通过名称找到目标容器。
默认情况下,无论是否已经建立了 显式连接,容器之间可以相互通信。如果想要防止尚未连接的容器能够互联,可以在启动 Docker 守护进程式加上 --icc=false 和 --iptables。
2.常用的容器指令
2.1.存储相关
2.2.网络相关
2.3.执行相关
2.4.centos删除docker0虚拟网卡
3.参考资料
容器指南之第一个容器 https://blog.51cto.com/waringid/5904849