base 镜像 – 每天5分钟玩转容器技术(10)-window安全运维_

上一节我们介绍了最小的 Docker 镜像本节讨论 base 镜像。base 镜像有两层含义1、不依赖其他镜像从 scratch 构建。

镜像的分层结构 – 每天5分钟玩转容器技术(11)-window安全运维_

Docker 支持通过扩展现有镜像,创建新的镜像。实际上,Docker Hub 中 99% 的镜像都是通过在 base 镜像中安装和配置需要的软件构建出来的。比如我们现在构建一个新的镜像,Dockerfile 如下:

构建镜像 – 每天5分钟玩转容器技术(12)-window安全运维_

对于 Docker 用户来说,最好的情况是不需要自己创建镜像。几乎所有常用的数据库、中间件、应用软件等都有现成的 Docker 官方镜像或其他人和组织创建的镜像,我们只需要稍作配置就可以直接使用。

Dockerfile 构建镜像 – 每天5分钟玩转容器技术(13)-window安全运维_

Dockerfile 是一个文本文件,记录了镜像构建的所有步骤。第一个 Dockerfile用 Dockerfile 创建上节的 ubuntu-with-vi,其内容则为:

镜像的缓存特性 – 每天5分钟玩转 Docker 容器技术(14)-window安全运维_

上一节我们学习了镜像的分层结构,今天讨论镜像的缓存特性。Docker 会缓存已有镜像的镜像层,构建新镜像时,如果某镜像层已经存在,就直接使用,无需重新创建。

调试 Dockerfile – 每天5分钟玩转 Docker 容器技术(15)-window安全运维_

包括 Dockerfile 在内的任何脚本和程序都会出错。有错并不可怕,但必须有办法排查,所以本节讨论如何 debug Dockerfile。

Dockerfile 常用指令 – 每天5分钟玩转 Docker 容器技术(16)-window安全运维_

是时候系统学习 Dockerfile 了。下面列出了 Dockerfile 中最常用的指令,完整列表和说明可参看官方文档。

RUN vs CMD vs ENTRYPOINT – 每天5分钟玩转 Docker 容器技术(17)-window安全运维_

RUN、CMD 和 ENTRYPOINT 这三个 Dockerfile 指令看上去很类似很容易混淆。本节将通过实践详细讨论它们的区别。

限制容器的 Block IO – 每天5分钟玩转 Docker 容器技术(29)-window安全运维_

前面学习了如何限制容器对内存和CPU的使用,本节我们来看 Block IO。Block IO 是另一种可以限制容器使用的资源。Block IO 指的是磁盘的读写,docker 可通过设置权重、限制 bps 和 iops 的方式控制容器读写磁盘的带宽,下面分别讨论。

一张图搞懂容器所有操作 – 每天5分钟玩转 Docker 容器技术(26)-window安全运维_

前面我们已经讨论了容器的各种操作,对容器的生命周期有了大致的理解,下面这张状态机很好地总结了容器各种状态之间是如何转换的。