Docker-升级基本映像 [英] Docker - Upgrading base Image

查看:6
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆