Docker只输出一个文件

时间:2017-03-28 21:00:45

标签: docker dockerfile

我无法通过标准谷歌搜索回答的快速问题。在一个非常简单的泊坞窗图像中,我试图将文本输出到两个单独的文件。为简单起见,我已从我的示例中删除了所有其他代码:

test # cat Dockerfile 
FROM centos:latest
    CMD echo "blah" > /docker_path/blah
    CMD echo "blah2" > /docker_path/blah2
test # docker build -t test .
Sending build context to Docker daemon 3.072 kB
Sending build context to Docker daemon 
Step 0 : FROM centos:latest
 ---> bac949ce964b
Step 1 : CMD echo "blah" > /docker_path/blah
 ---> Using cache
 ---> bf1fb35bdaca
Step 2 : CMD echo "blah2" > /docker_path/blah2
 ---> Using cache
 ---> f36005c7aba9
Successfully built f36005c7aba9
test #  docker run -v /usr/local/docker/test:/docker_path:Z test
test # ls
blah2  Dockerfile

为什么只写一个文件?我已经意识到它始终是写入的第二个CMD,如果我将写入加入一个命令(ala:CMD echo" blah"> / docker_path / blah&& echo&# 34; blah2"> / docker_path / blah2),它将输出两个文件。

你能帮我理解这种行为吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

CMD确定从映像启动容器时默认运行的命令。只有最后一个语句有效,因为它会覆盖先前语句设置的内容。如果您想要更复杂的行为,请考虑在图片中包含shell脚本,并使用CMD调用该脚本。

如果要在构建映像时执行命令,请使用RUN语句。这些按照您的预期顺序执行。查看does.了解详情。