我有一个名为python-example
的python图像
with container_id = c08e4ee85879
里面存在一个打印hello world
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中提交更改时,是否无法运行映像?
答案 0 :(得分:2)
<强>解决方案强>
将您的提交更改为:
docker commit --change='CMD ["python", "file.py"]' c08e4ee85879 python-example2
<强>解释强>
当你跑步时:
docker run -it python-example bash
您正在更改默认命令(python file.py
至bash
)。
您可以查看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"]'
,您可以获得所需的命令。