我想运行一个托管简单Web应用程序的docker容器,但是我不明白如何设计/运行映像作为服务器.例如:
docker run -d -p 80:80 ubuntu:14.04 /bin/bash
这将启动并立即关闭集装箱.相反,我们可以互动地开始:
docker run -i -p 80:80 ubuntu:14.04 /bin/bash
这是有效的,但现在我必须为运行的每个容器保持打开交互式shell?我宁愿只是启动它并让它在后台运行.一个黑客将使用一个永远不会返回的命令:
docker run -d -p 80:80 {image} tail -F /var/log/kern.log
但是现在我不能连接到shell,检查应用程序是如何发生的.
有没有办法在后台启动容器(就像我们对vm一样),以允许从主机附加/分离外壳的方式.还是我完全错过了这一点?
最佳答案
docker运行的最后一个参数是在容器内运行的命令.当您运行docker运行-d -p 80:80 ubuntu:14.04 / bin / bash时,您正在容器中运行bash,没有其他的.您实际上希望在容器中运行Web应用程序并保持该容器存活,因此您应该对Docker运行-d -p 80:80 ubuntu:14.04 / path / to / yourapp.
但是您的应用程序可能依赖于某些配置才能运行.如果从环境变量读取其配置,可以使用-e key = value参数与docker运行.如果您的应用程序需要配置文件到位,则应该首先使用Dockerfile来配置配置文件.
This article提供了一个在容器中运行节点应用程序的完整示例.