Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dockerfile-CMD不运行shell脚本_Docker_Cmd_Dockerfile - Fatal编程技术网

Dockerfile-CMD不运行shell脚本

Dockerfile-CMD不运行shell脚本,docker,cmd,dockerfile,Docker,Cmd,Dockerfile,好的,我刚刚学习了创建Dockerfile,我的理解(可能是错误的)是,CMD命令应该能够在容器中运行shell脚本,一旦它被放置在容器中 我只是用一个香草apache2安装来尝试一下 Dockerfile FROM ubuntu:latest ADD install-apache.sh /Scripts/install-apache.sh RUN chmod +x /Scripts/install-apache.sh CMD [/Scripts/install-apache.sh] R

好的,我刚刚学习了创建Dockerfile,我的理解(可能是错误的)是,
CMD
命令应该能够在容器中运行shell脚本,一旦它被放置在容器中

我只是用一个香草apache2安装来尝试一下

Dockerfile

FROM ubuntu:latest

ADD install-apache.sh /Scripts/install-apache.sh
RUN chmod +x /Scripts/install-apache.sh
CMD [/Scripts/install-apache.sh]



RUN echo "Hope this worked!"
我也试过:

CMD ["/Scripts/install-apache.sh"]
当我使用
RUN
命令时,它会工作(没有[and])

所以我有点不知道
CMD
应该做什么。

我听从了老师的指示 并通读docker文档

问题: 我如何错误地使用
CMD
,在这种情况下应该如何使用它?

  • RUN
    在构建映像时执行。这通常用于在生成的映像中安装东西或执行修改
  • CMD
    在容器启动时执行。使用此选项可启动应用程序
同时检查

CMD的主要用途是为正在执行的 容器。这些默认值可以包括可执行文件,也可以省略 可执行文件,在这种情况下,必须指定入口点 指导也是如此


哦,所以当用户运行我正在构建的容器时,CMD会运行,而在我构建它时,run会使用吗?@JeffKranenburg ExactlyThank@Sebastian-会在几分钟后接受,如果so允许的话:-)是的。您可以直接将
CMD[/Scripts/install apache.sh]
更改为
RUN/Scripts/install apache.sh
,它将完成您所期望的功能。作为
CMD
的一个例子,您可能希望类似
CMD[“httpd”,“-DFOREGROUND”]
的东西在容器启动时自动为您启动apache。但是我想在CMD上运行.sh文件,我如何实现这一点?