docker python:已在容器中提交更改但新图像不会运行

时间:2017-04-12 23:48:28

标签: python docker

我有一个名为python-example的python图像 with container_id = c08e4ee85879

里面存在一个打印hello world

的python脚本

file.py

print "HELLO WORLD"

如果我运行我的图片: docker run python-example输出HELLO WORLD将打印在我的终端上,然后容器将退出。

当我尝试输入容器以通过vim更改脚本时,退出容器并将更改提交到新图像,然后尝试运行新图像,不打印任何内容。请参阅以下步骤

docker run -it python-example bash
vim file.py
#make some changes by adding a new print statement "HELLO WORLD 2"
exit
docker commit c08e4ee85879 python-example2

docker run python-example2 #now nothing gets printed to terminal screen

当我输入新图像然后运行python file.py时,输出被打印出来。

docker run -it python-example2 bash
python file.py
"HELLO WORLD"
"HELLO WORLD 2"

为什么会这样?当在bash中提交更改时,是否无法运行映像?

1 个答案:

答案 0 :(得分:2)

<强>解决方案

将您的提交更改为:

docker commit --change='CMD ["python", "file.py"]' c08e4ee85879 python-example2

<强>解释

当你跑步时:

docker run -it python-example bash

您正在更改默认命令(python file.pybash)。

您可以查看docker ps

CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS               NAMES
c08e4ee85879        python-example        "bash"                   32 seconds ago      Up 30 seconds                           thirsty_hugle

Check dockerfile reference - CMD for more information

使用--change='CMD ["python", "file.py"]',您可以获得所需的命令。