我正在发出如下命令:
docker run -d myvm script.sh 10
问题是,它不起作用。因此,我想看看执行script.sh时发生了什么,或者根本没有执行它。该脚本应该在文本文件中写一些东西。但是我不知道这是什么错误。当我以用户身份登录到容器并自己执行脚本时,确实得到了正确的结果。所以,
docker run -it myvm
然后
script.sh 10
工作正常。那我怎么看发生了什么呢?
谢谢
答案 0 :(得分:1)
如果我正确理解您的要求,我认为您对该命令感到困惑。实际上,docker run命令是应用于映像而不是脚本。
请参考以下文档: https://docs.docker.com/engine/reference/run。
现在,如果要执行脚本,可以通过几种方法来执行。两个例子:
复制script.sh并在容器运行时执行它:
docker cp my_container_id:/script/path/host/script.sh /tmp/script.sh
docker exec -i my_container_id chmod +x /tmp/script && /bin/bash /tmp/script.sh 10
创建一个Dockerfile: https://docs.docker.com/engine/reference/builder/ 使用Dockerfile,您可以基于一个映像自定义容器。 创建一个名为Dockerfile的文件并添加:
FROM ubuntu:latest
ADD /path/host/script.sh /tmp/script.sh
CMD [/tmp/script, "10"]
例如,我们使用ubuntu映像并将脚本复制到容器中的/ tmp /路径中,然后在引导时执行它。
现在您可以构建图像了:
docker build -t foo /path/to/dockerfile/Dockerfile
然后运行:
docker run -d foo
编辑: 这个答案不再适合最初的问题。