본문 바로가기
프로그램 활용/클라우드 가상화 도커

도커 docker_get D-Bus connection: Operation not permitted

by 3604 2023. 8. 1.
728x90

출처: [docker] Failed to get D-Bus connection 에러 해결 — Jen's Space (tistory.com)

이미지 centos:7를 사용하려고 했더니 systemctl을 사용할 수가 없다 ;;
ubuntu에서는 잘 됐던거 같은데 centos은 안되는게 왜케 많은지 모르겠다

[user01@master ~]$ docker run -it centos:7 bash
[root@9fa1db10b89c /]# systemctl
Failed to get D-Bus connection: Operation not permitted

 

 

1. 컨테이너 해결방법

--privileged 옵션과 -d 옵션으로 /sbin/init을 실행한후 exec로 /bin/bash를 실행시켜야 한다

$ docker run --privileged -d --name mycentos centos:7 /sbin/init
$ docker exec -it mycentos /bin/bash

 

 

2. 쿠버네티스 해결 방법

Dockerfile을 생성할 때 ENTRYPOINT 에서 /sbin/init 을 실행시켜준다

FROM centos:7
RUN yum -y install httpd
ENTRYPOINT ["/sbin/init", "systemctl start httpd", "systemctl enable httpd"]
$ docker build -t mycentos . # 현재 위치에 있는 Dockerfile을 이미지로 만들기
$ docker push <레포명>/mycentos # 이미지를 레포지터리에 올리기


그리고 deployment.yml 을 작성할 때 securityContext:privileged를 true로 해준다.

...
spec:
containers:
  - name: mycentos
  image: <레포명>/mycentos
  securityContext:
    privileged: true
    imagePullPolicy: Always
...

사실 쿠버네티스는 이렇게 하면 된다는데 되는지는 모르겠다 ..

 

3. centos/systemd

그냥 이것도 저것도 다 귀찮다 싶으면 CentOS에서 제공하는 systemd가 가능한 Dockerfile을 사용하자

https://github.com/CentOS/CentOS-Dockerfiles/tree/master/systemd/centos7

728x90