Docker 实用技巧与镜像构建全解析
一、指定特定镜像进行构建
在构建 Docker 镜像时,大多数情况下我们会使用通用的镜像名称,如 “node” 或 “ubuntu”,通常不会有问题。但存在一种情况,即镜像名称不变,而镜像内容可能发生改变。比如,仓库名称只是一个引用,可能会被修改指向不同的底层镜像。即使使用冒号指定标签(如 ubuntu:trusty),也不能消除这种风险,因为安全更新可能会使用相同的标签自动重建易受攻击的镜像。
当我们希望确保构建基于特定且不变的镜像时,解决方案是在 Dockerfile 中指定特定的镜像 ID。以下是一个示例:
FROM 8eaa4ff06b53
RUN echo "Built from image id:" > /etc/buildinfo
RUN echo "8eaa4ff06b53" >> /etc/buildinfo
RUN echo "an ubuntu 14.4.01 image" >> /etc/buildinfo
CMD ["echo","/etc/buildinfo"]
要从这样的特定镜像(或层)ID 进行构建,镜像 ID 及其数据必须存储在本地的 Docker 守护进程中。Docker 注册表不会在 Docker Hub 或其他配置的注册表中查找镜像 ID。需要注意的是,所引用的镜像不必有标签,它可以是本地的任何层,我们可以从任意层开始构建,这在进行 Dockerfile 构建分析的特定操作或实验时可能会很有用。
如果要将镜像远程持久化,最好将镜像打标签并推送到远
超级会员免费看
订阅专栏 解锁全文
2110

被折叠的 条评论
为什么被折叠?



