docker - docker ubuntu 容器执行 bash 问题
问题描述
我拉并运行一个图像
docker run -d --name=lemp \
-v /Users/bappa/Desktop/server/www:/var/www/ \
-p 8080:80 \
stenote/docker-lemp:16.04
然后去 bash like
docker exec -it lemp bash
这绝对没问题。但是当我用ubuntu:16.04
图像做同样的事情时。我发现如下回复
问题出在哪里?为什么容器退出?谢谢。
解决方案
导致不同行为的原因是因为它们的 Dockerfile CMD 或 ENTRYPOINT。
一旦主进程(CMD 或 ENTRYPOINT)完成,docker 容器就会停止。
如果您查看docker-lemp Dockerfile:
ENTRYPOINT ["/entrypoint.sh"]
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,因此容器不会退出。