Ubuntu Docker 이미지 내의 systemd 및 systemctl
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로 실행되지 않으면 시작 및 중지 명령을 처리 할 데몬이 없습니다.
참조 URL : https://stackoverflow.com/questions/39169403/systemd-and-systemctl-within-ubuntu-docker-images
'Development Tip' 카테고리의 다른 글
R이 소수 초로 POSIXct를 포맷하는 방법 (0) | 2021.01.08 |
---|---|
AngularJS에서 jQuery를 사용하는 방법 (0) | 2021.01.08 |
Python 피클에 선호되는 (또는 가장 일반적인) 파일 확장자 (0) | 2021.01.08 |
iPhone : 팀 에이전트가 아닌 개발자가 배포 용 앱을 빌드 할 수 있습니까? (0) | 2021.01.08 |
데이터베이스에 연결 한 후 역할 전환 (0) | 2021.01.08 |