如何调试docker run命令

时间:2018-07-23 12:03:52

标签: docker

我正在发出如下命令:

docker run -d myvm script.sh 10 

问题是,它不起作用。因此,我想看看执行script.sh时发生了什么,或者根本没有执行它。该脚本应该在文本文件中写一些东西。但是我不知道这是什么错误。当我以用户身份登录到容器并自己执行脚本时,确实得到了正确的结果。所以,

docker run -it myvm

然后

script.sh 10

工作正常。那我怎么看发生了什么呢?

谢谢

1 个答案:

答案 0 :(得分:1)

如果我正确理解您的要求,我认为您对该命令感到困惑。实际上,docker run命令是应用于映像而不是脚本。

请参考以下文档: https://docs.docker.com/engine/reference/run

现在,如果要执行脚本,可以通过几种方法来执行。两个例子:

  1. CLI:

复制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
  1. Dockerfile:

创建一个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

编辑: 这个答案不再适合最初的问题。