docker ubuntu容器执行bash问题

时间:2018-09-19 07:44:51

标签: docker ubuntu ubuntu-16.04

我拉并运行像这样的图像

docker run -d --name=lemp \
  -v /Users/bappa/Desktop/server/www:/var/www/ \
  -p 8080:80 \
  stenote/docker-lemp:16.04

&然后像这样

docker exec -it lemp bash

这绝对好。但是当我用ubuntu:16.04做图像时,会发生同样的事情。我发现响应如下 enter image description here 问题出在哪里?为什么集装箱要退出?谢谢。

1 个答案:

答案 0 :(得分:1)

导致不同行为的原因是因为它们的Dockerfile CMD或ENTRYPOINT。

一旦主进程(CMD或ENTRYPOINT)完成,泊坞窗容器就会停止。

如果您查看docker-lemp Dockerfile

ENTRYPOINT ["/entrypoint.sh"]

Ubuntu Dockerfile相比:

CMD ["bash"]

docker-lemp运行entrypoint.sh,它将运行仍在前台的其他进程,而Ubuntu运行bash,该bash在完成后退出。

如果要将Ubuntu保留在后台,一个简单的技巧就是:

docker container run -d ubuntu:16.04 tail -f /dev/null

这用 tail -f / dev / null 替换了默认的CMD bash ,因此容器不会退出。