首页 > 解决方案 > 如何更改/升级 Docker 映像的一部分?图像内的模块,而不是整个图像

问题描述

首先,它在理论上是正确的和可能的吗?假设:我有一个 Superset 的 Docker 映像,由几个模块组成:Python、Postgres、Superset 本身等。容器运行良好,但我需要将 Superset 本身从 v.1.15 升级到 v.1.21 而Python 和其他部分令人满意地是最新的。如何仅更改/升级图像的 Superset 部分?(因为发布的镜像文件还没有更新)

标签: dockerdocker-composecontainersdocker-imagesuperset

解决方案


实际上,您可以从这张图片中“导出”:

FROM amancevice/superset

RUN ...

来自docs.docker.com:运行 FROM 指令初始化一个新的构建阶段并为后续指令设置基本映像。


运行时

docker build -t your_new_image .

你会得到一个新图像amancevice/superset作为基础图像。该RUN命令可让您运行升级所需的任何 shell 命令(请参阅docker.docs: run


如果您只想在正在运行的容器中升级,您可以exec进入它

docker exec -it <your container> bash

(或者sh,容器使用的任何外壳)。

请参阅docs.docker.com: exec。您可以在您的容器中进行操作,但您的更改仅应用于此容器,不会影响此映像中的新容器。


推荐阅读