📄️ 使用 Docker 镜像
在之前的介绍中,我们知道镜像是 Docker 的三大组件之一。
📄️ 获取镜像
之前提到过,Docker Hub 上有大量的高质量的镜像可以用,这里我们就说一下怎么获取这些镜像。
📄️ 列出镜像
要想列出已经下载下来的镜像,可以使用 docker image ls 命令。
📄️ 删除本地镜像
如果要删除本地的镜像,可以使用 docker image rm 命令,其格式为:
📄️ 利用 commit 理解镜像构成
注意:如果您是初学者,您可以暂时跳过后面的内容,直接学习 容器 一节。
📄️ 使用 Dockerfile 定制镜像
从刚才的 docker commit 的学习中,我们可以了解到,镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么之前提及的无法重复的问题、镜像构建透明性的问题、体积的问题就都会解决。这个脚本就是 Dockerfile。
📄️ Dockerfile 指令详解
我们已经介绍了 FROM,RUN,还提及了 COPY, ADD,其实 Dockerfile 功能很强大,它提供了十多个指令。下面我们继续讲解其他的指令。
📄️ COPY 复制文件
格式:
📄️ ADD 更高级的复制文件
ADD 指令和 COPY 的格式和性质基本一致。但是在 COPY 基础上增加了一些功能。
📄️ CMD 容器启动命令
CMD 指令的格式和 RUN 相似,也是两种格式:
📄️ ENTRYPOINT 入口点
ENTRYPOINT 的格式和 RUN 指令格式一样,分为 exec 格式和 shell 格式。
📄️ ENV 设置环境变量
格式有两种:
📄️ ARG 构建参数
格式:ARG [=]
📄️ VOLUME 定义匿名卷
格式为:
📄️ EXPOSE 声明端口
格式为 EXPOSE [...]。
📄️ WORKDIR 指定工作目录
格式为 WORKDIR 。
📄️ USER 指定当前用户
格式:USER [:]
📄️ HEALTHCHECK 健康检查
格式:
📄️ ONBUILD 为他人做嫁衣裳
格式:ONBUILD 。
📄️ LABEL 指令
LABEL 指令用来给镜像以键值对的形式添加一些元数据(metadata)。
📄️ SHELL 指令
格式:SHELL ["executable", "parameters"]
📄️ 参考文档
* Dockerfile 官方文档:https://docs.docker.com/engine/reference/builder/
📄️ 多阶段构建
之前的做法
📄️ 实战多阶段构建 Laravel 镜像
本节适用于 PHP 开发者阅读。Laravel 基于 8.x 版本,各个版本的文件结构可能会有差异,请根据实际自行修改。
📄️ 构建多种系统架构支持的 Docker 镜像 -- docker manifest 命令详解
我们知道使用镜像创建一个容器,该镜像必须与 Docker 宿主机系统架构一致,例如 Linux x8664 架构的系统中只能使用 Linux x8664 的镜像创建容器。
📄️ 其它制作镜像的方式
除了标准的使用 Dockerfile 生成镜像的方法外,由于各种特殊需求和历史原因,还提供了一些其它方法用以生成镜像。
📄️ 镜像的实现原理
Docker 镜像是怎么实现增量的修改和维护的?