我已经尝试按照以下教程和文档进行有关如何对Web服务器进行docker化的操作,但是我无法通过docker run命令使该服务运行。
这是我的Dockerfile:
FROM ubuntu:trusty #Update and install stuff RUN apt-get update RUN apt-get install -y python-software-properties aptitude screen htop nano nmap nginx #Add files ADD src/main/resources/ /usr/share/nginx/html EXPOSE 80 CMD service nginx start
我创建我的图像:
docker build -t myImage .
当我运行它时:
docker run -p 81:80 myImage
它似乎只是停止:
docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 90e54a254efa pms-gui:latest /bin/sh -c service n 3 seconds ago Exit 0 prickly_bohr
我希望它与端口81-> 80一起运行,但事实并非如此。跑步
docker start 90e
似乎什么也没做。
我也尝试过直接输入
docker run -t -i -p 81:80 myImage /bin/bash
从这里我可以开始服务
service nginx start
从另一个标签中,我可以看到它正在按预期方式工作(也在我的浏览器中):
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 408237a5e10b myImage:latest /bin/bash 12 seconds ago Up 11 seconds 0.0.0.0:81->80/tcp mad_turing
所以我认为我的Dockerfile出了问题吗?谁能帮我这个忙,我对Docker还是很陌生。谢谢!
解决方案: 基于Ivant的回答,我找到了另一种在前台启动nginx的方法。我的Dockerfile CMD现在看起来像:
CMD /usr/sbin/nginx -g "daemon off;"
到目前为止,官方的nginx映像使用它来运行nginx(请参阅Dockerfile):
CMD ["nginx", "-g", "daemon off;"]
就我而言,这足以使其正常启动。网上有一些教程建议完成此操作的更尴尬的方法,但以上内容似乎很干净。