在现有的docker镜像(不是容器)中运行安装命令?

时间:2017-04-03 21:18:43

标签: python docker

我使用我的docker容器构建了一个图像:

https://github.com/brando90/hbf_tensorflow_code/blob/master/docker_files/tf_cpu_py3.4/Dockerfile

最终系统决定让其中一个python模块因某些奇怪的原因而消失(对我来说完全无法解释)。它出错了,我用bash运行了一个容器并安装了缺少的python库。我跑了:

apt-get install python3-tk

它在正在运行的容器中安装了缺少的库(已经神奇地卸载了)并且它很好。现在事情似乎奏效了。但是,如果没有删除它或没有使用该命令添加新的docker文件,是否有可能在现有的docker镜像中运行此安装命令?

也有人对可能发生的事情有任何猜测,甚至跟踪可能发生的事情吗?我确实尝试从头开始重新制作泊坞窗图像,但它一直有错误。这是否意味着我需要在我的Dockerfile中添加该命令(看起来有点随机)?

1 个答案:

答案 0 :(得分:3)

一般来说,在Docker术语中,有两种方法可以解决这个问题。

第一种方法是将缺少的包添加到Dockerfile并重建图像。我只需将python3-tk附加到您的其他apt-get install命令并重建它。

第二个选项是根据现有容器保存新图像。如果已经有基于原始映像运行的容器并且您已修复该问题,则可以使用docker commit命令。只需运行docker commit <container_id> <new_image_name>

请记住,容器正在基础映像上运行覆盖文件系统。他们不直接写图像。因此,如果要将包添加到容器中,则这些更改不会立即反映在基本映像中。