Skip to content

镜像构建最佳实践

应用镜像最佳实践

docker构建容器

在构建容器时,最常用的是使用 run 命令,它构建一个容器,并且在容器内运行软件。run 的时候会在本地寻找需要运行的镜像,若本地没有则会链接到镜像仓库寻找,然后下载到本地,然后运行容器。

run 的基本指令形式为
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

关于各选项细节可以使用 docker help run 指令获取。
另外还有一个 create 命令,它安装镜像构建容器,但是不运行该容器

容器运行细节

大多时候运行容器还是使用 run 的,容器运行时可以使其后台运行(--detach / -d 守护进程选项)或者与用户交互(-i -t 终端绑定选项),只要在 OPTION 上输入对应选项即可。
另外需要的 OPTION 还有 --name 为容器命名,而且 docker 每个容器的名称都是唯一的,重名的容器是不允许的。同时 docker 提供 rename 指令为容器改名

每次 run 成功之后,指令都会返回容器的辨识码
任何时候都可以使用 docker ps 指令来获取每个容器的运行状态,ps 指令会显示每个运行容器的 ID ,镜像,执行的命令,运行的时常,暴露的端口以及容器名称
当容器停止后,可以使用 docker restart 指令重启容器
docker log 可以获取容器运行的日志,日志记录容器运行时的所有信息

容器间的隔离细节

每个容器运行之后,docker 都会分配一个 PID 命名空间给该容器,即容器也分隔了进程。每个容器都可以包含 PID 的进程。当然 docker 也提供了不创建 PID 命名空间的选择,在 runcreate 的 OPTION 中使用 --pid 可以修改。

如之前说的,容器的名称是不能相同的,第二个同名容器构建时会报错。类似的,容器都有一个唯一的标识码 ID(在 run 之后返回的 1024 位数字),所有指令的容器名称都可替换为该 ID(前 12 位或者全部都可)。利用 shell 或 bash 编程,标识码可以被赋给变量。如 CID=$(docker create nginx:latest) 。或者提供 --cidfile 选项可以将 ID 写入文件之中。