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?
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
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:
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.