Tengo el siguiente Dockerfile que debería iniciar una máquina centos e instalar httpd:
FROM centos:centos6.6
RUN yum install -y httpd
RUN chkconfig httpd on;
RUN /etc/init.d/httpd start
EXPOSE 80
CMD ["/bin/bash"]
Construyo la imagen:
docker build --no-cache -t centos_http .
La construcción dice:
...
Step 4/6 : RUN /etc/init.d/httpd start
---> Running in 0766e84ec292
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2 for ServerName
[ OK ]
...
Successfully built 5380a0bacdfb
Pero si ejecuto la imagen:
docker run -p 8090:80 -it 5380
[root@eda7400a46a9 /]# ps -ef | grep httpd | grep -v grep
[root@eda7400a46a9 /]#
¡httpd no se está ejecutando! si ejecuto manualmente /etc/init.d/httpd start, dentro de la imagen, funciona bien...
Respuesta1
Lo estás haciendo completamente mal. RUN
El comando se ejecutará solo durante la compilación. Deberías usar algo como lo siguiente
FROM centos:6.6
RUN yum install -y httpd
EXPOSE 80
ENTRYPOINT ["/usr/sbin/httpd", "-D", "FOREGROUND"]
También puedes echarle un vistazoDockerfile oficial de Apache