我正在使用docker hub中的archlinux/base官方图像。
我正在尝试使用systemctl,它说。
$ docker run --rm -it ac16c4b756ed systemctl start httpd System has not been booted with systemd as init system (PID 1). Can't operate.
如何解决这个问题。
好吧,“systemctl”本身不会做任何事情,但是它会要求systemd守护进程执行一些任务。它通常通过插座与它通信。所以systemd守护进程必须已经启动。如果需要的话,有一些基本映像实际上会以PID-1的形式运行systemd。
但就我个人而言,我不建议这样做。如果您确实需要坚持运行systemctl命令,那么您还可以尝试使用 docker-systemctl-replacement 在那个操作系统上也有脚本。它还可以用作容器的PID-1。
如果您的目标是运行Apache Web服务器(httpd),那么应该使用 httpd image .
Docker容器通常用于运行单个进程。因此,您通常不会设计一个容器来将systemd之类的东西作为根进程运行,然后将httpd作为子进程运行。你可以直接在前台运行httpd。httpd图像可以做到这一点。