在Docker容器中自动启动服务

我试图在Docker容器中启动一个像Apache2自动的服务

My Dockerfile: FROM ubuntu:14.04 RUN apt-get update RUN apt-get -y install apache2 ADD ./startup.sh /opt/startup.sh RUN chmod +x /opt/startup.sh CMD ["/bin/bash", "/opt/startup.sh"] RUN /opt/startup.sh My startup.sh: #!/bin/bash service apache2 start 

但是Apache2并没有在容器中自动启动。

容器本身不具备以往习惯的传统意义上的服务启动能力, 通过使用暴发户或systemd。 所以你只需要手动启动apache …

 FROM ubuntu:14.04 RUN apt-get update RUN apt-get -y install apache2 EXPOSE 80 443 ENTRYPOINT ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"] 

请记住,启动容器时,需要使用-p参数正确映射端口。 dockerfile不处理任何VOLUMES ,只需安装apache2并启动它。 如果您需要了解这些工作方式,则需要查阅Dockerfile Reference 。