web-dev-qa-db-fra.com

Le système Docker n'a pas été démarré avec systemd comme système d'initialisation

J'ai une image Ubuntu 18.04 en cours d'exécution sur mon conteneur docker. Je me connecte et installe Openresty. également installé systemd. Lorsque j'utilise la commande "systemctl", j'obtiens cette erreur:

System has not been booted with systemd as init system (PID 1). Can't operate.

Comment puis-je y remédier?

6
Abdol Seed

Dans votre terminal, vous pouvez taper:

$ Sudo dockerd

et la magie opère

Alors, ouvrez un autre terminal et essayez-le

$ docker ps -a

Si vous rencontrez toujours un problème d'autorisation, exécutez:

$ Sudo usermod -aG docker your-user
1
Felipe Augusto

Si je comprends l'OP, il essaie d'exécuter systemctl dans le conteneur. Cela ne fonctionne pas car systemd ne s'exécute pas dans le conteneur pour commencer. Cela ne peut pas être fait dans des conteneurs non privilégiés. Il y a une autre question ici dans SO about pourquoi il ne devrait pas exécuter systemd dans un conteneur .

J'ai rapidement cherché sur Google et trouvé cette page de 2014 sur en utilisant systemd dans un conteneur dans docker , où il y a une courte explication. Le correctif consiste à utiliser un conteneur privilégié (exécutant docker run --privileged ...), ce qui est sans doute une mauvaise idée mais pourrait convenir à l'OP. Il y a un 2019 mise à jour de ce dernier article , et le résultat est qu'ils ont développé leur propre moteur de conteneur (donc pas de docker).

La solution évidente serait d'avoir un service unique, donc pas besoin de systemd, même si cela pourrait ne pas être possible dans le cas du PO.

En résumé, les solutions possibles:

  • ne pas utiliser systemd
  • utiliser un conteneur privilégié
  • ne pas utiliser docker
0
Javier Gonzalez

avez-vous essayé d'utiliser: Sudo /etc/init.d/docker start au lieu de systemd?

J'ai un problème similaire et cela le résout.

0
Samuel Simonney