컨테이너에 postgresql을 설치하던 중 아래와 같은 에러가 발생했다.
$ /usr/pgsql-10/bin/postgresql-10-setup initdb
Failed to get D-Bus connection: Operation not permitted
failed to find PGDATA setting in postgresql-10.service
문제는 권한이 없는 (non-privileged) 컨테이너를 실행중이라고 한다.
systemd 의 경우 CAP_SYS_ADMIN capability가 필요하다.
도커는 보안을 위해 권한이 없는 컨테이너의 경우 capability 를 활성화 시키지 않는다.
또한 systemd는 컨테이너의 cgroup 파일 시스템에 RO(Read Only) 접근을 필요로 한다.
해결을 위해서는 "–v /sys/fs/cgroup:/sys/fs/cgroup:ro" 구문을 추가해야 한다.
# 문제
$ docker run -d --name centos7.4_postgres centos:7.4.1708 /bin/bash -c "while true; do echo hello world; sleep 1; done"
# 해결
$ docker run -d --name centos7.4_postgres --privileged -it -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup:ro centos:latest /usr/sbin/init
# 참고 사이트
https://serverfault.com/questions/824975/failed-to-get-d-bus-connection-operation-not-permitted
http://webkebi.zany.kr:9003/board/bView.asp?bCode=13&aCode=14170
'docker' 카테고리의 다른 글
Dockerfile 작성 및 이미지 빌드 방법 (0) | 2018.12.28 |
---|---|
Ubuntu, CentOS에 기본 패키지 설치 (0) | 2018.12.28 |
특정 CentOS 버전 컨테이너 생성하기 (0) | 2018.12.27 |
컨테이너 데몬으로 생성하기 (0) | 2018.12.27 |
docker alias 명령 정리 (0) | 2018.12.27 |