Docker-升级基本映像 [英] Docker - Upgrading base Image
本文介绍了Docker-升级基本映像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个基础,正在被100个应用程序使用。所有100个应用程序在它们的Dockerfile中都有共同的基本映像。现在,我正在为操作系统升级或其他一些升级升级基础映像,并升级版本,我还标记了最新的版本。 这里,问题是,每当我更改基本映像时,所有100个应用程序都需要更改其dockerfile中的基本映像,并重新构建应用程序以使用最新的基本映像。 有没有更好的方法来处理这件事?
注意:-我在Kubernetes中运行容器,每个应用程序的Dockerfile都在Git中。
推荐答案
您可以使用DockerfileARG
指令修改FROM
行(参见Dockerfile文档中的Understand how ARG and FROM interact)。一种可能的方法是让您的配置项系统注入基本映像标记。
ARG base=latest
FROM me/base-image:${base}
...
这有可能导致个别开发人员基于较旧的基础映像构建测试映像;如果映像之间的差异仅仅是操作系统补丁,那么您可能会认为这是一个可以接受的小风险,只要只将官方映像推送到生产环境。
除此之外,除了修改单个Dockerfile之外,没有其他选择。您可以编写脚本
# Individually check out everything first
BASE=$(pwd)
TAG=20191031
for d in *; do
cd "$BASE/$d"
sed -i.bak "s@FROM me/base-image.*@FROM:me/base-image:$TAG/" Dockerfile
git checkout -b "base-image-$TAG"
git commit -am "Update Dockerfile to base-image:$TAG"
git push
hub pull-request --no-edit
done
也有自动化的依赖项更新工具,这些工具或许能够为您管理其脚本方面。
这篇关于Docker-升级基本映像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文