Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker-升级基本映像_Docker_Kubernetes_Dockerfile_Docker Image - Fatal编程技术网

Docker-升级基本映像

Docker-升级基本映像,docker,kubernetes,dockerfile,docker-image,Docker,Kubernetes,Dockerfile,Docker Image,我有一个基地,这是由100个应用程序使用。所有100个应用程序的Dockerfile中都有公共基础映像。现在,我正在升级操作系统升级或其他升级的基础映像,并升级版本,同时我还标记了最新版本。 这里的问题是,每当我更改基本映像时,所有100个应用程序都需要更改dockerfile中的基本映像,并使用最新的基本映像重建应用程序。 有没有更好的方法来处理这个问题 注意:-我正在Kubernetes中运行我的容器,每个应用程序的Dockerfile都在GIT中。如果您需要部署最新版本的基本映像,是的,您

我有一个基地,这是由100个应用程序使用。所有100个应用程序的Dockerfile中都有公共基础映像。现在,我正在升级操作系统升级或其他升级的基础映像,并升级版本,同时我还标记了最新版本。 这里的问题是,每当我更改基本映像时,所有100个应用程序都需要更改dockerfile中的基本映像,并使用最新的基本映像重建应用程序。 有没有更好的方法来处理这个问题


注意:-我正在Kubernetes中运行我的容器,每个应用程序的Dockerfile都在GIT中。

如果您需要部署最新版本的基本映像,是的,您需要再次构建、标记、推送、拉取和部署每个容器。如果未正确标记基础图像,则需要更改所有100个文件的dockerfile

但是您有一些选择,比如使用sed替换DockerFile中的所有引用,并从指向每个应用程序目录的sh文件执行所有构建命令

使用docker compose,您可以使用一个命令更新正在运行的100个应用程序:

docker stack deploy --compose-file docker-compose.yml
但仍然需要重建容器

编辑:
使用docker compose,您也可以使用一个命令构建100个容器,您需要在一个compose文件中定义所有容器,检查Dock是否存在错误。

如果您需要部署最新版本的基本映像,是的,您需要再次构建、标记、推送、拉送和部署每个容器。如果未正确标记基础图像,则需要更改所有100个文件的dockerfile

但是您有一些选择,比如使用sed替换DockerFile中的所有引用,并从指向每个应用程序目录的sh文件执行所有构建命令

使用docker compose,您可以使用一个命令更新正在运行的100个应用程序:

docker stack deploy --compose-file docker-compose.yml
但仍然需要重建容器

编辑:
使用docker compose,您可以使用一个命令构建100个容器,您需要在一个compose文件中定义所有容器,检查docks是否存在问题。

如果每个应用程序使用
基本图像:latest
,则无需更改其
Dockerfile
。但在基本图像更新之后,您必须重建应用程序图像。之后,您需要更新应用程序以使用新图像


例如,如果每个应用程序使用的是
基本图像:最新的
,则使用answer中的advisions您不需要更改其
Dockerfile
。但在基本图像更新之后,您必须重建应用程序图像。之后,您需要更新应用程序以使用新图像


例如,使用来自应答的建议,您可以使用Dockerfile
ARG
指令修改来自
行的
(请参见Dockerfile文档中的)。一种可能的方法是让您的CI系统注入基本图像标记

ARG base=latest
FROM me/base-image:${base}
...
这有一个风险,即单个开发人员将基于较旧的基本映像构建测试映像;如果图像之间的差异仅仅是OS补丁,那么你可以认为这是一个小的和可接受的风险,只要官方图像被推到生产。 除此之外,除了修改单个DockerFile之外,没有太多的替代方案。你可以编写脚本

#首先逐个检查所有内容
基数=$(pwd)
标签=20191031
对于d in*;做
cd“$BASE/$d”
sed-i.bak“s@FROMme/base image.*@FROM:me/base image:$TAG/“Dockerfile
git签出-b“基本图像-$TAG”
git commit-am“将Dockerfile更新为基本映像:$TAG”
git推送
集线器拉动请求--无编辑
完成

也有自动的依赖项更新工具,这些工具可能可以为您管理它的脚本方面。

您可以使用Dockerfile
ARG
指令从
行修改
(请参见Dockerfile文档中的)。一种可能的方法是让您的CI系统注入基本图像标记

ARG base=latest
FROM me/base-image:${base}
...
这有一个风险,即单个开发人员将基于较旧的基本映像构建测试映像;如果图像之间的差异仅仅是OS补丁,那么你可以认为这是一个小的和可接受的风险,只要官方图像被推到生产。 除此之外,除了修改单个DockerFile之外,没有太多的替代方案。你可以编写脚本

#首先逐个检查所有内容
基数=$(pwd)
标签=20191031
对于d in*;做
cd“$BASE/$d”
sed-i.bak“s@FROMme/base image.*@FROM:me/base image:$TAG/“Dockerfile
git签出-b“基本图像-$TAG”
git commit-am“将Dockerfile更新为基本映像:$TAG”
git推送
集线器拉动请求--无编辑
完成
也有自动的依赖项更新工具,这些工具可以为您管理它的脚本方面

每当我更改基础映像时,所有100个应用程序都需要更改dockerfile中的基础映像,并使用最新的基础映像重建应用程序

这是一个特性,不是一个bug;所有100个应用程序都需要在继续使用新映像之前运行它们的测试(并可能修复任何回归)

有一些工具可以扫描所有的回购协议,并自动向100个应用程序提交拉取请求(或者,如果DockerFile中没有简单的“FROM”行,您可以编写一个自定义的拉取请求)

每当我更改基础映像时,所有100个应用程序都需要更改dockerfile中的基础映像,并使用最新的基础映像重建应用程序

这是一个特性,不是一个bug;所有100个应用程序都需要在继续使用新映像之前运行它们的测试(并可能修复任何回归)


有一些工具可以扫描所有repo并自动向100个应用程序提交请求(或者,如果Dockerfiles中没有简单的“FROM”行,您可以编写一个自定义的请求)。

我在Kubernetes中运行我的应用程序,我的代码在GIT中。您不重建容器,而是重建图像<代码>docker sta