образ docker archlinux: система не была загружена с systemd в качестве системы инициализации (PID 1). Не могу работать

Я использую официальный образ archlinux/base из Docker Hub.

Я пытаюсь использовать systemctl, и он говорит.

$ docker run --rm -it ac16c4b756ed systemctl start httpd     
System has not been booted with systemd as init system (PID 1). Can't operate.

Как это решить.


person Santhosh    schedule 04.03.2019    source источник


Ответы (2)


Если вашей целью является запуск веб-сервера Apache (httpd), вам следует использовать https://hub.docker.com/_/httpd. .

Контейнеры Docker обычно предназначены для запуска одного процесса. Таким образом, вы обычно не проектируете контейнер для запуска чего-то вроде systemd в качестве корневого процесса, а затем запускаете httpd в качестве дочернего процесса. Вы бы просто запустили httpd прямо на переднем плане. Образ httpd делает это.

person King Chung Huang    schedule 04.03.2019

Что ж, «systemctl» ничего не делает сам по себе, но он попросит демона systemd выполнить какую-то задачу. Он обычно связывается с ним посредством сокета. Так что демон systemd уже должен быть запущен. Есть некоторые базовые образы, которые действительно запускают systemd как PID-1, если это необходимо.

Однако лично я бы этого не рекомендовал. Если вам действительно нужно придерживаться запущенных команд systemctl, вы также можете попробовать использовать docker-systemctl- замена скрипта и в этой операционной системе. Он также может служить PID-1 контейнера.

person Guido U. Draheim    schedule 04.03.2019