1
我想在CentOS 7容器上啓動httpd服務。但systemctl命令在容器中不起作用。在CentOS 6中,我可以通過簡單地使用/etc/init.d/apachectl -d
命令啓動httpd。但在CentOS 7中我找不到/*/systemd/
中的任何apachectl文件。在Docker CentOS 7容器中啓動服務
那麼如何在CentOS 7容器中啓動httpd服務呢?
我想在CentOS 7容器上啓動httpd服務。但systemctl命令在容器中不起作用。在CentOS 6中,我可以通過簡單地使用/etc/init.d/apachectl -d
命令啓動httpd。但在CentOS 7中我找不到/*/systemd/
中的任何apachectl文件。在Docker CentOS 7容器中啓動服務
那麼如何在CentOS 7容器中啓動httpd服務呢?
最好的辦法是讓自己的形象centos7您安裝httpd
FROM centos:7
RUN yum -y install httpd; yum clean all; systemctl enable httpd.service
EXPOSE 80
建立你的形象與docker build -t my-centos:7 .
Systemd沒有SYS_ADMIN不能運行。這就是爲什麼我設置了下列變量。
$ docker run -it -p 80:80 -e "container=docker" --privileged=true -d --security-opt seccomp:unconfined --cap-add=SYS_ADMIN -v /sys/fs/cgroup:/sys/fs/cgroup:ro my-centos:7 bash -c "/usr/sbin/init"
驗證容器運行:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
967581bdf31a my-centos:7 "bash -c /usr/sbin/in" 1 seconds ago Up 1 seconds 0.0.0.0:80->80/tcp gigantic_stallman
Verifiy的httpd啓動
$ docker exec -it gigantic_stallman /bin/bash -c "systemctl status httpd"
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2016-12-28 11:44:04 UTC; 2min 20s ago
Docs: man:httpd(8)
man:apachectl(8)
Main PID: 61 (httpd)
Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
CGroup: /docker/967581bdf31a3b741a5e857720e199614d816b05a2132271f3adf910f0ed3207/system.slice/httpd.service
├─61 /usr/sbin/httpd -DFOREGROUND
├─66 /usr/sbin/httpd -DFOREGROUND
├─67 /usr/sbin/httpd -DFOREGROUND
├─68 /usr/sbin/httpd -DFOREGROUND
├─69 /usr/sbin/httpd -DFOREGROUND
└─70 /usr/sbin/httpd -DFOREGROUND
Dec 28 11:44:04 967581bdf31a systemd[1]: Starting The Apache HTTP Server...
Dec 28 11:44:04 967581bdf31a httpd[61]: AH00558: httpd: Could not reliably d...e
Dec 28 11:44:04 967581bdf31a systemd[1]: Started The Apache HTTP Server.
謝謝。有效。謹慎地闡述或指導我到SYS_ADMIN部分? – muhammad