J'essaie d'utiliser la systemctl
commande dans un ubuntu:16.04
conteneur Docker. J'exécute la commande suivante ...
systemctl status ssh
Cependant je reçois l'erreur ...
Failed to connect to bus: No such file or directory
Pourquoi ça ne marche pas? Est-ce que cela est lié à l'exécution d'Ubuntu dans un conteneur Docker? Comment puis-je systemctl
travailler correctement?
service ssh start
Réponses:
Je suppose que vous commencez votre conteneur Docker avec quelque chose comme
Le problème est maintenant que votre PID de processus d'initialisation 1 n'est
/bin/bash
pas systemd. Confirmez avecps aux
.En plus de cela, il manque dbus avec serait le moyen de communiquer. C'est de là que vient votre message d'erreur. Mais comme votre PID 1 n'est pas systemd, l'installation de dbus ne vous aidera pas.
Le mieux serait de repenser la façon dont vous envisagez d’utiliser docker. Ne vous fiez pas à systemd en tant que gestionnaire de processus, mais demandez au conteneur de menu fixe d'exécuter l'application souhaitée au premier plan.
la source
docker log
./sbin/init
processus PID = 1. Ajouter--privileged=true
comme suggéré par @sonjaya Sonjaya ci-dessous a résolu le problème.D'autres ont signalé un problème similaire. Démarrez le terminal et tapez:
Voyez-vous une variable d'environnement comme celle-ci?
Où
id -u
est entouré de guillemets et non de guillemets simples. Cette variable est réinterprétée en un nombre généralement1000
destiné aux utilisateurs réguliers et0
au super utilisateur (sudo).Si la variable d'environnement
XDG_RUNTIME_DIR
n'existe pas, vous devez la créer. La discussion complète se trouve dans le tableau de bord, les réponses systemd .la source
root
, j’ai donc utilisé la variableXDG_RUNTIME_DIR=/run/root/0
, sans succès. Ensuite, j'ai vérifié le dossier/run
et trouvé qu'il n'y avait pas de sous-dossier/run/root
. Est-ce que je peux quand même obtenir un message d'erreur plus détaillé? J'ai jeté un coup d'œilsystemctl --help
mais je ne voyais pas comment obtenir des messages d'erreur détaillés.PID 1
ce qui est habituellementsystemd
remplacé dans un conteneur Docker avec le conteneur Entrypoint .Si vous obtenez cette erreur dans le sous-système Windows pour Linux (WSL), c'est parce que Docker n'est pas pris en charge. Cela est dû au manque de groupes de contrôle et à d’autres conditions préalables.
la source
Essaye ça:
ou
sera le même résultat.
Ici, je viens du doc de Docker :
la source
Il suffit de démarrer le
dbus
service:la source
Vous n’exécutez peut-être pas systemd , qui est l’implémentation par défaut d’ init le 16.04. Si vous avez mis à niveau à partir de 14.04, vous êtes probablement toujours en train d'exécuter upstart , et le résultat de l'exécution de la commande systemctl est le résultat obtenu.
Voir ma réponse à systemctl: comand introuvable 16.04 serveur pour plus.
la source
Dans le conteneur de menu fixe, je pense que vous pouvez mettre à jour-rc.d si vous êtes toujours aux prises avec systemd. J'ai essayé avec update-rd.c et cela fonctionne.
la source
Je recevais exactement la même erreur, puis je l’exécutais avec succès avec
sudo
la source
sudo
de ça. On dirait une coïncidence. Pouvez-vous s'il vous plaît re-tester?saif@sr-server:~$ systemctl status ssh
Failed to connect to bus: No such file or directory
saif@sr-server:~$ sudo systemctl status ssh
[sudo] password for saif:
● ssh.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2018-01-19 23:38:14 PKT; 4min 4s ago Main PID: 18222 (sshd) Tasks: 15 Memory: 32.7M CPU: 488ms