- 공유 링크 만들기
- X
- 이메일
- 기타 앱
[Docker]Docker에서 Centos7 systemd 에러
도커에서 Centos7으로 컨테이너를 올려 systemctl 커맨드를 실행하면 에러가 발생한다.
컨테이너 실행
$ sudo docker -i -t —name centos-test centos /bin/bash
systemd를 실행
~/# systemctl status nginxFailed to get D-Bus connection: No connection to service manager.
이번 포스팅에서는 상기 에러에 대해 다룰 예정이다.
우선 궁금한 해결법을 먼저 살펴보자.
- 해결법
결론부터 말하자면 다른 방법으로 실행을 해야한다.(응용편(1) 참조)
$ sudo docker run -d —privileged —name centos-nginx centos /sbin/init
$ sudo docker exec -i -t centos-nginx /bin/bash
~/# systemctl status nginx● nginx.service Loaded: not-found (Reason: No such file or directory) Active: inactive (dead)
nginx를 설치한 상태가 아니므로 상기의 메세지가 발생되나 에러는 해결되었다.
순정 Centos7의 베이스 이미지로 도커를 실행한 경우 SELinux가 On이므로 —privileged를 붙인다.
- 원인
- —privileged 옵션을 추가하는 것은 보안상의 이유로 컨테이너의 권한을 제한하기 위함이다.
(SELinux의 권한을 넘어서는 안된다.) - SELinux가 off인 경우 docker 1.2.0 이후의 버전에 —cap-add 옵션이 추가되어 해당 옵션으로도 해결이 가능히다.$ sudo docker run —cap-add=SYS_ADMIN -d —name testcentos centos /sbin/init
- —privileged 옵션을 추가하는 것은 보안상의 이유로 컨테이너의 권한을 제한하기 위함이다.
댓글
댓글 쓰기