Estou tentando usar o systemctl
comando em um ubuntu:16.04
contêiner de docker. Estou executando o seguinte comando ...
systemctl status ssh
No entanto, estou recebendo o erro ...
Failed to connect to bus: No such file or directory
Por que isto não está funcionando? Isso está relacionado ao Ubuntu em execução em um contêiner de docker? Como posso systemctl
trabalhar corretamente?
service ssh start
Respostas:
Suponho que você inicie seu contêiner de encaixe com algo como
O problema agora é que o processo PID 1 do processo init
/bin/bash
não é systemd. Confirme comps aux
.Além disso, você está perdendo o dbus com a maneira de se comunicar. É daí que a sua mensagem de erro vem. Mas como o seu PID 1 não é systemd, não ajudará a instalar o dbus.
O melhor seria repensar a maneira como você planeja usar o docker. Não confie no systemd como gerenciador de processos, mas faça com que o contêiner do docker execute o aplicativo desejado em primeiro plano.
fonte
docker log
./sbin/init
ser um processo PID = 1. Adicionar--privileged=true
como sugerido por @sonjaya sonjaya abaixo resolveu o problema.Outros relataram um problema semelhante. Inicie o terminal e digite:
Você vê uma variável de ambiente como esta?
Onde
id -u
está entre reticulares e não aspas simples. Essa variável é reinterpretada em um número geralmente1000
para usuários regulares e0
para superusuário (sudo).Se a variável de ambiente
XDG_RUNTIME_DIR
não existir, você precisará criá-la. A discussão completa está nas respostas do systemd da barra de ativação .fonte
root
, usei a variávelXDG_RUNTIME_DIR=/run/root/0
sem êxito. Depois verifiquei a pasta/run
e descobri que não há subpasta/run/root
. Existe alguma maneira de obter uma mensagem de erro mais detalhada? Eu dei uma olhada,systemctl --help
mas não consegui ver uma maneira de obter mensagens de erro detalhadas.PID 1
o que é geralmentesystemd
é substituído em um recipiente Docker com o recipiente EntryPoint .Se você está recebendo esse erro no Windows Subsystem for Linux (WSL), descobri que é porque o Docker não é suportado. Isso ocorre devido à falta de cgroups e outros pré-requisitos.
fonte
Tente o seguinte:
ou
será o mesmo resultado.
Aqui eu recebo do documento do Docker :
fonte
Basta iniciar o
dbus
serviço:fonte
Você pode não estar executando o systemd , que é a implementação padrão do init no 16.04. Se você atualizou a partir do 14.04, provavelmente ainda está iniciando , e o resultado da execução do comando systemctl é a saída que você obteve.
Veja minha resposta em systemctl: comando não encontrado 16.04 server para mais.
fonte
Dentro do contêiner do docker, acho que você pode atualizar o rc.d se ainda estiver enfrentando problemas com o systemd. Eu tentei com o update-rd.c e funciona.
fonte
Eu estava recebendo exatamente o mesmo erro e, em seguida, o executo com êxito
sudo
fonte
sudo
disso. Parece uma coincidência. Você pode testar novamente?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