【发布时间】:2017-07-02 07:38:09
【问题描述】:
我想在我的容器启动时设置一些配置,为此我使用的是 shell 脚本。但是我的容器将在我的脚本结束后立即退出,我尝试使用 -d 标志/分离模式,但它永远不会在分离模式下运行。
下面是我的 Dockerfile
FROM ubuntu:14.04
ADD shell.sh /usr/local/bin/shell.sh
RUN chmod 777 /usr/local/bin/shell.sh
CMD /usr/local/bin/shell.sh
下面是我的shell脚本
#!/bin/bash
echo Hello-docker
-
不带任何标志运行
docker run hello-docker这将在我的控制台上打印“Hello-docker”并退出
-
使用 -itd 标志运行
docker run -itd hello-docker我在 COMMAND 部分看到的不同之处在于,当我运行其他图像时,命令部分将显示“/bin/bash”,并将继续以分离模式运行。
当我使用 shell 脚本在容器中运行映像时,COMMAND 部分将显示“/bin/sh -c /usr/loca”,然后退出。
我想运行容器直到我不手动停止它。
编辑:
在 Dockerfile 中添加 ENTRYPOINT 指令后,这将不会执行我的 shell 脚本 :(
FROM ubuntu:14.04
ADD shell.sh /usr/local/bin/shell.sh
RUN chmod 777 /usr/local/bin/shell.sh
CMD /usr/local/bin/shell.sh
ENTRYPOINT /bin/bash
根据 docker 文档here
当使用替代参数运行容器时,CMD 将被覆盖,因此如果我使用以下一些参数运行 docker image,将不会执行 CMD 指令。 :(
sudo docker run -it --entrypoint=/bin/bash <imagename>
【问题讨论】:
标签: bash shell docker sh dockerfile