문제
systemd
Ubuntu Docker 컨테이너에서 활성화되지 않았거나 사용할 수없는 것 같습니다 .
설정
ubuntu:16.04
및 ubuntu:16.10
이미지 에서 Docker 컨테이너를 실행 하고 있습니다.
테스트
내가 실행하면 :
systemctl status ssh
의 16,04
용기
결과는 오류입니다 Failed to connect to bus: No such file or directory
에서 16.10
컨테이너 오류는 다음과 같습니다 bash: systemctl: command not found
.
내가 할 경우 which systemctl
systemctl은 16.04
컨테이너에는 있지만 컨테이너에는 없습니다 16.10
.
나는 /lib/systemd
존재 하는 것을 발견했다 .
나는 다음과 같이 systemd 설치를 시도했습니다.
apt-get install systemd libpam-systemd systemd-ui
그런 다음 which systemctl
systemctl을 찾습니다.16.10
그러나 systemctl status ssh
여전히 오류를 제공합니다.Failed to connect to bus: No such file or directory
질문
Ubuntu Docker 이미지에서 사용하기 위해 systemd 및 systemctl을 활성화하려면 어떻게해야합니까?
Ubuntu Docker 컨테이너에서 systemd가 활성화되지 않는 이유는 무엇입니까? 컨테이너를 인스턴스화하는 데 systemd가 사용되지 않습니까?
나는에서 우분투 전환에 대한 정보 만 우분투 / 우분투 도커 이미지,이 주제에 대한 모든 문서 찾기 위해 실패 Upstart
에를 systemd
. 완전한 설명을 제공하는 문서가 있습니까?
이것은 의도적으로 설계된 것입니다. Docker는 컨테이너의 포 그라운드에서 프로세스를 실행해야하며 컨테이너의 pid 네임 스페이스 내에서 PID 1로 생성됩니다. Docker는 OS 가상화가 아닌 프로세스 격리를 위해 설계되었으므로 컨테이너 내에서 실행되는 다른 OS 프로세스 및 데몬 (예 : systemd, cron, syslog 등)이 없으며 실행하는 진입 점 또는 명령 만 있습니다.
systemd 명령이 포함되어 있다면 진입 점이 init를 대체하기 때문에 작동하지 않는 많은 것들이있을 것입니다. Systemd는 cgroup을 변경하는 기능으로 인해 프로세스가 컨테이너의 격리를 벗어날 수 있기 때문에 docker가 컨테이너 내부를 제한하는 cgroup을 사용합니다. 컨테이너 내에서 systemd를 init로 실행하지 않으면 시작 및 중지 명령을 처리 할 데몬이 없습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다