gpt4 book ai didi

docker - Docker仅输出一个文件

转载 作者:行者123 更新时间:2023-12-02 20:49:32 26 4
gpt4 key购买 nike

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

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“blah2”> / docker_path / blah2),它将输出这两个文件。

您能帮我了解这种行为吗?

谢谢!

最佳答案

CMD确定从镜像启动容器时默认情况下运行的命令。只有最后一条语句才有效,因为它会覆盖先前的所有设置。如果您想要更复杂的行为,请考虑在镜像中包含一个shell脚本,然后使用CMD对其进行调用。

如果要在构建镜像时执行命令,请使用RUN语句。这些将按您期望的顺序执行。有关详细信息,请检查Dockerfile reference

关于docker - Docker仅输出一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43079853/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com