::: Zany's Homepage ::: Zany Wiki | 사이트 통합 검색
 
 
 

[docker] failed to get D-Bus connection: Operation not permitted

게시판
OS Others
작성자
Zany
작성일
2017-08-03 17:35:09
읽은수
3136
평점
   
표시옵션
HTML사용 | 자동BR태그 | 공백문자허용 | 가운데정렬 | 고정폭글꼴 | 자동URL링크 | 마우스선택
관련링크01
http://serverfault.com/questions/824975/failed-to-get-d-bus-connection-operation-not-permitted 
관련링크02
https://stackoverflow.com/questions/39169403/systemd-and-systemctl-within-ubuntu-docker-images 
별 생각없이 도커 이미지를 아래 명령어로 실행시키고,
(interactive + tty + detach)
docker run -itd centos:latest /bin/bash
docker exec 명령으로 detach 모드로 실행된 도커에 쉘로 붙어서
docker exec -it 0cac64f0b0e1 /bin/bash
도커 안에서 centos 7 의 systemd 명령을 내리면 아래와 같은 에러 메시지를 뱉는다.
[root@0cac64f0b0e1 /]# systemctl list-units
Failed to get D-Bus connection: Operation not permitted
이에 대해 찾아보니 역시 서버계의 스택오버플로우인 서버폴트에 상세한 답변이 올라와 있다.
https://serverfault.com/questions/824975/failed-to-get-d-bus-connection-operation-not-permitted

대충 번역해보면...
권한없는(non-privileged) 컨테이너를 실행중이라 생각됩니다.
systemd 는 CAP_SYS_ADMIN capability 가 요구되는데, 
도커는 보안을 위해 권한없는 컨테이너에서는 해당 capability 를 활성화 시키지 않습니다.
또한 systemd 는 컨테이너 내의 cgroup 파일 시스템에 대해 RO(read only) 접근을 필요로 합니다.
이는 "–v /sys/fs/cgroup:/sys/fs/cgroup:ro" 구문을 추가하여 해결할 수 있습니다.
서버폴트 본문에는 Dockerfile 구문을 사용하여
도커 이미지를 생성하고, 빌드하여 이미지 등록하고 실행하는 전체 명령이 작성되어 있는데
docker build --rm -t centos7-systemd - < mydockerfile
실제로 중요한건 마지막의 docker run 명령어 이다.
D-Bus 오류 메시지를 만났다면, 이미 도커 이미지를 갖고 있을것이고...

자신이 갖고 있는 이미지를 아래와 같은 명령어로 띄우게 되면,
서버폴트에서 작성자가 언급한 CAP_SYS_ADMIN capability 와 
systemd 가 필요로 하는 /sys/fs/cgroup 에 대한 읽기가 가능해진다.
docker run --privileged -it -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup:ro centos:latest /usr/sbin/init
docker run 구문에 몇가지 군더더기가 붙어야 한다.
(이 문제 해결을 위해 반드시 추가되어야 하는 옵션들이다)
1. --privileged
2. -v /sys/fs/cgroup:/sys/fs/cgroup:ro
3. /usr/sbin/init (init 명령어의 위치: 우분투의 경우 /sbin/init → 실제로는 systemd 이며 init,systemd 참고)
4. -e container=docker (서버폴트의 글 작성자 옵션에는 있는데 현 문제 해결과는 관계없는 옵션; 환경값 잡아주는 옵션)

물론 기존에 이미지 올릴 때 주던 -it 또는 -itd 와 같은 옵션은 기본적으로 줘야한다.
CentOS / 우분투 둘다 동일 옵션(3번 옵션만 파일 위치가 OS 마다 다를 수 있다)으로 잘 되었다.

게시물이 도움이 되셨으면 +1 을 눌러주세요~
 게시판 글 목록
No Subject Poster Hits Posted
14223 Zany 1591 2017-11-07 13:24:26
14211 Zany 495 2017-09-29 17:23:58
Zany 3136 2017-08-03 17:35:09
14169 Zany 765 2017-08-03 09:54:25
14151 Zany 374 2017-07-09 16:47:01
14140 Zany 327 2017-07-04 10:50:16
14135 Zany 2511 2017-07-03 10:00:41
14131 Zany 2196 2017-06-29 14:02:44
댓글 달기 - 이 글이 도움이 되었거나 흥미로우셨다면, 댓글을 남겨주세요.(^^)(oo)(__)
작성자
                       
 
zany.kr
  Copyright ⓒ 2002-2010 Zany's Programming Lab. All Rights Not Reserved.
temporary This Page loads on 0.078 Secs