我创建了一个Dockerfile
,如下所示:
From alpine:latest
WORKDIR /
COPY ./init.sh .
CMD ["/bin/sh", "./init.sh"]
和如下脚本文件init.sh
:
#!/bin/sh
mkdir -p mount_point
echo hello > ./mount_point/hello.txt
我用这些建立了一个图像:
docker build . -t test_build
并将其作为
docker container run --rm --name test_run -it test_build sh
其中在该文件夹中只有两个上述文件。
在容器中,我可以找到主机中的x
(可执行文件)的init.sh
文件。
但是,不存在应由创建的文件夹mount_point
CMD ["bin/sh", "./init.sh"]
请注意,当我在容器中运行下面的任何一个命令时,它会成功地创建mount_point
,正如我所期望的那样
sh init.sh
或
/bin/sh init.sh
和
sh -c ./init.sh
你能告诉我我哪里做错了吗?
1条答案
按热度按时间kg7wmglp1#
当你这样做
最后的
sh
会覆盖映像中的CMD定义,CMD不会运行。要验证脚本是否正常工作,您可以将脚本更改为如下形式
然后运行没有
sh
的映像,您应该会看到“Hello”消息和./mount_point目录中的目录列表。