我拉并运行像这样的图像
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
做图像时,会发生同样的事情。我发现响应如下
问题出在哪里?为什么集装箱要退出?谢谢。
答案 0 :(得分:1)
导致不同行为的原因是因为它们的Dockerfile CMD或ENTRYPOINT。
一旦主进程(CMD或ENTRYPOINT)完成,泊坞窗容器就会停止。
如果您查看docker-lemp Dockerfile:
ENTRYPOINT ["/entrypoint.sh"]
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 ,因此容器不会退出。