docker - 如何更改/升级 Docker 映像的一部分?图像内的模块,而不是整个图像
问题描述
首先,它在理论上是正确的和可能的吗?假设:我有一个 Superset 的 Docker 映像,由几个模块组成:Python、Postgres、Superset 本身等。容器运行良好,但我需要将 Superset 本身从 v.1.15 升级到 v.1.21 而Python 和其他部分令人满意地是最新的。如何仅更改/升级图像的 Superset 部分?(因为发布的镜像文件还没有更新)
解决方案
实际上,您可以从这张图片中“导出”:
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。您可以在您的容器中进行操作,但您的更改仅应用于此容器,不会影响此映像中的新容器。
推荐阅读
- maven-javadoc-plugin - 如何使用最新的 Javadoc Maven 插件 (3.x+) 生成汇总报告?
- ios - 文件选择器中的错误找不到有效的活动来处理请求。确保您已安装文件资源管理器
- javascript - 我使用“数据目标”来保持活动链接样式。即使从活动链接移动页面,如何保持样式
- algorithm - 计算一系列变换的最优阶
- vba - 在磁盘上保存/读取数十亿个 20 位数字的最快方法
- angular - 如何通过事件点击角度选择轮播
- r - 如何在两个文件之间建立链接
- delay - 当玩家击中立方体时,我试图延迟“重启”
- netcdf - ncdump - 如何在不包含 nodata 值的情况下将 .nc 转换为文本?
- java - RecyclerView 获取 EditText 并设置 TextView