systemctl이 버스에 연결하지 못했습니다-docker ubuntu : 16.04 컨테이너


72

도커 컨테이너 systemctl에서 명령 을 사용하려고합니다 ubuntu:16.04. 다음 명령을 실행 중입니다 ...

systemctl status ssh

그러나 오류가 발생합니다 ...

Failed to connect to bus: No such file or directory

왜 이것이 작동하지 않습니까? 도커 컨테이너에서 실행되는 Ubuntu와 관련이 있습니까? systemctl올바르게 일하려면 어떻게 해야합니까?


2
사용service ssh start
Bidyut

답변:


50

도커 컨테이너를 다음과 같이 시작한다고 가정합니다.

docker run -t -i ubuntu:16.04 /bin/bash

문제는 이제 init 프로세스 PID 1이 /bin/bash시스템화되어 있지 않다는 것입니다. 로 확인하십시오 ps aux.

또한 dbus가 누락되어 통신하는 방법이 될 것입니다. 오류 메시지가 나오는 곳입니다. 그러나 PID 1이 시스템화되어 있지 않으므로 dbus 설치에 도움이되지 않습니다.

도커 사용 계획을 다시 생각하는 것이 가장 좋습니다. 프로세스 관리자로서 systemd에 의존하지 말고 docker 컨테이너가 포 그라운드에서 원하는 응용 프로그램을 실행하게하십시오.


openssh-server와 같은 서비스는 기본 syslog 기능에 로그인하도록 구성되어 있습니다. systemctl에 의존하지 않고 sshd 로그를 얻는 방법은 무엇입니까?
Parth Shah

@ParthShah sshd 매뉴얼 페이지를 확인하십시오. 광산에는 다음과 같은 옵션이 있습니다. -D로 계산하면 전경에 유지할 수 있습니다. -e를 사용하면 로그를 직접 인쇄하도록 지시합니다. 그런 다음 나중에로 도커 방식으로 검사 할 수 있습니다 docker log.
user228505

[FYI] 님이 /sbin/initPID = 1 프로세스 인 중에이 오류가 발생했습니다 . 추가 --privileged=true@sonjaya sonjaya 아래 isssue을 해결 제안한다.
DimG

아름다운 대답 !!
Sachin Verma

11

다른 사람들도 비슷한 문제를보고했습니다. 터미널을 시작하고 다음을 입력하십시오.

$ env

이런 환경 변수가 보입니까?

XDG_RUNTIME_DIR=/run/user/`id -u`

id -u작은 따옴표가 아닌 백틱으로 묶인 곳 . 이 변수는 보통 1000일반 사용자와 0수퍼 유저 (sudo)를 위해 숫자로 재 해석됩니다 .

환경 변수 XDG_RUNTIME_DIR가 존재하지 않으면 작성해야합니다. 전체 토론은 런치 패드 시스템 답변에 있습니다.


2
나는 성공하지 않고 이것을 시도했다. 내 우분투 16.04 인스턴스는 도커 컨테이너 형식 root이므로 작업중 인 사용자를 설정하지 않았 으므로 변수 XDG_RUNTIME_DIR=/run/root/0없이 성공했습니다. 그럼 폴더를 확인 /run하고 더 하위 폴더가 없음을 발견 /run/root. 어쨌든 더 자세한 오류 메시지가 표시됩니까? 살펴 systemctl --help보았지만 자세한 오류 메시지를 얻는 방법을 볼 수 없었습니다.
던컨 그라 빌

1
나는 같은 문제를 겪고 있는데도 문제를 해결하지 못했습니다. 혹시 @DuncanGravill이 하나를 알아낼나요
Roeland

3
@Roeland 예. 내가 물어 비슷한 질문 강한 응답을했다 SO에 있습니다. 또한 Docker 웹 사이트에서 Self-Paced 자습서를 보는 것이 좋습니다. Docker 컨테이너에서 컨테이너 Entrypoint 로 대체 PID 1되는 방법 을 비디오에서 (약간 모호하게) 설명 합니다. systemd
Duncan Gravill

훌륭합니다, 고마워요! 시스템 장치에서 사용자 장치를 시작 / 관리하려면 이것이 필요했습니다.
Adrian Günter

5

Linux 용 Windows 하위 시스템 (WSL)에서이 오류가 발생하면 Docker가 지원되지 않기 때문에 발생했습니다. 이것은 cgroup과 다른 전제 조건이 없기 때문입니다.


3

이 시도:

docker run -ti -d --privileged=true images_docker  "/sbin/init"

또는

docker run -ti -d --privileged=true images_docker

같은 결과가 될 것입니다.

여기 Docker문서 에서 얻습니다 .

Docker 컨테이너는 기본적으로 "권한이 없으며"Docker 컨테이너 내에서 Docker 데몬을 실행할 수 없습니다. 기본적으로 컨테이너는 장치에 액세스 할 수 없지만 "권한있는"컨테이너에는 모든 장치에 대한 액세스 권한이 부여됩니다 (cgroups 장치에 대한 설명서 참조).

운영자가 docker run --privileged를 실행하면 Docker는 호스트의 모든 장치에 액세스 할 수있을뿐만 아니라 AppArmor 또는 SELinux의 일부 구성을 설정하여 컨테이너가 호스트의 컨테이너 외부에서 실행되는 프로세스와 거의 동일한 컨테이너 액세스를 허용합니다 . --privileged로 실행에 대한 추가 정보는 Docker 블로그에서 확인할 수 있습니다.


2
당신의 명령과 받아 들여진 질문 의 차이점을 설명해 주 시겠습니까?
Melebius

AskUbuntu에 오신 것을 환영합니다! 도와 주셔서 감사합니다! 설명서를 빠르게 검토 하면이 명령에서 2 또는 2 오류가 발생했다고 생각할 수 있습니다. 당신이 그것을 편집 하고 당신이하고있는 일과 그것이 어떻게 문제를 해결하는지 설명 할 수 있다면 친절 합니다.
Geek

images_docker를 말할 때, 바닐라 우분투를 의미합니까? 또는 다른 것?
Parth Shah

1

16.04 의 기본 init 구현 인 systemd를 실행하고 있지 않을 수 있습니다 . 14.04에서 업그레이드 한 경우 여전히 upstart를 실행 중일 가능성 이 높으며 systemctl 명령 을 실행 한 결과 가 나타납니다.

자세한 내용은 systemctl : comand not found 16.04 server 에서 내 대답을 참조하십시오 .


그러나 우분투 컨테이너는 기본적으로 시스템화되어 있지 않으며 시작되지 않습니다.
Stefan Lasiewski

뭐? 우분투는 기본적으로 systemd있다
knocte

스테판 : 도커의 경우에는 당신이 맞다고 생각합니다.
휴 분투

knocte : 제 의견은 14.04 (업 스타트)에서 16.04 (시스템)로 업그레이드하는 경우를 다루고 있습니다. 버전 업그레이드를 수행 할 때 Upstart는 이해할 수있는 이유로 시스템으로 교체되지 않습니다 (예 : 시스템 중단). 돌이켜 보면 릴리스 업그레이드 프로세스가 Docker에서 사용되지 않는다는 것을 알고 있습니다. 내가 전화 한 링크를 참조하십시오. 많은 답변과 의견이 Docker의 특정 사례를 고려하지 못하는 것을 알았으며 앞으로 답변 할 때 찾을 것입니다.
휴 분투

1

dbus서비스를 시작하십시오 .

/etc/init.d/dbus start

0

도커 컨테이너 내부에서 systemd로 여전히 어려움을 겪고 있다면 update-rc.d를 업데이트 할 수 있다고 생각합니다. update-rd.c로 시도했지만 작동합니다.


0

똑같은 오류가 발생하여 다음과 같이 성공적으로 실행합니다. sudo

sudo systemctl status ssh

1
당신은 그럴 필요가 없습니다 sudo. 우연의 일치 인 것 같습니다. 다시 시험해 주시겠습니까?
잔나

1
@Zannasaif@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
Saif

왜 -1입니까? 방금 나를 위해 일한 것을 게시했습니다.
Saif

downvote는 내 것이 아니었다.
Zanna
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.