docker ubuntu 容器执行 bash 问题

docker ubuntu container exec bash issue

我拉了&运行像

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

&然后转到bash喜欢

docker exec -it lemp bash

这绝对没问题。但是当我用 ubuntu:16.04 图像做同样的事情时。我发现如下响应 问题出在哪里?为什么容器退出?谢谢。

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

主进程(CMD 或 ENTRYPOINT)完成后,docker 容器停止。

如果你看docker-lemp Dockerfile

ENTRYPOINT ["/entrypoint.sh"]

Ubuntu Dockerfile相比:

CMD ["bash"]

docker-lemp 运行 entrypoint.sh,它会运行更多留在前台的进程,而 Ubuntu 运行 bash,它会在完成后自行退出。

如果您想在后台保留 Ubuntu,一个简单的技巧是:

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

这会将默认的 CMD bash 替换为 tail -f /dev/null 因此容器不会退出.