Ich habe die folgende Docker-Datei, die eine CentOS-Maschine starten und httpd installieren sollte:
FROM centos:centos6.6
RUN yum install -y httpd
RUN chkconfig httpd on;
RUN /etc/init.d/httpd start
EXPOSE 80
CMD ["/bin/bash"]
Ich erstelle das Image:
docker build --no-cache -t centos_http .
Der Build sagt:
...
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
Aber wenn ich das Image ausführe:
docker run -p 8090:80 -it 5380
[root@eda7400a46a9 /]# ps -ef | grep httpd | grep -v grep
[root@eda7400a46a9 /]#
httpd läuft nicht! Wenn ich /etc/init.d/httpd start manuell innerhalb des Images ausführe, funktioniert es einwandfrei ...
Antwort1
Sie machen das völlig falsch. RUN
Der Befehl wird nur während des Builds ausgeführt. Sie sollten etwas wie das Folgende verwenden
FROM centos:6.6
RUN yum install -y httpd
EXPOSE 80
ENTRYPOINT ["/usr/sbin/httpd", "-D", "FOREGROUND"]
Sie können auch einen Blick aufoffizielles Apache Dockerfile