-->

솔직히 도커는 고래이미지가 더 귀엽지 않나...쩝

[Docker] Failed to get D-Bus connection: Operation not permitted

 

dockerfile을 실행해 container를 run 하고 서비스를 실행하려고 하면 에러가 난다.

#dockerfile 실행
[minggu92@cloud dockerfiles]$ docker run -it dockerfile_test:1.0 /bin/bash

#유저변경
[root@a81f33368378 /]# su - minggu1

#sshd 서비스 상태 확인
[minggu1@a81f33368378 ~]$ systemctl status sshd
Failed to get D-Bus connection: Operation not permitted
[minggu1@a81f33368378 ~]$ sudo systemctl status sshd
Failed to get D-Bus connection: Operation not permitted

 

1. docker 명령어 해결

docker container는 기본적으로 Unprivileged모드로 실행되며 이상태에서는 시스템 주요자원에 접근할 수 있는 권한이 부족하기 때문에 --privileged옵션을 주어야한다.

-d옵션을 사용하면 컨테이너가 detached 모드에서 실행되며 이 모드가 없을 때 Ctrl + C로 빠져나오면 컨테이너는 종료된다.

systemctl 명령어를 사용하려면 /sbin/init을 사용한다.

대신 해당 명령어로 실행시키면 attach 대신 docker exec -it [service] bash로 접근해야 한다.

#docker 실행
[minggu92@cloud dockerfiles]$ docker run --privileged -p 1002:22 -d --name minggu1_ssh dockerfile_test:1.0  /sbin/init
d45e8fc8ba2c821eccea71d0ca00316f7f9fa621e8d4f10b433cab8def6b413c
[minggu92@skylark_dev dockerfiles]# docker exec -it minggu1_ssh /bin/bash

[root@d45e8fc8ba2c /]# su - minggu1
[minggu1@d45e8fc8ba2c ~]$ systemctl status sshd
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2022-03-22 04:16:54 UTC; 13s ago
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 92 (sshd)
   CGroup: /docker/d45e8fc8ba2c821eccea71d0ca00316f7f9fa621e8d4f10b433cab8def6b413c/system.slice/sshd.service
           └─92 /usr/sbin/sshd -D
           ‣ 92 /usr/sbin/sshd -D
[minggu1@d45e8fc8ba2c ~]$

 

2. Dockerfile에 ENTRYPOINT 추가

# 1. pull OS image (centos or ubuntu)
# format : FROM [image]:[tag]
FROM centos:7
# FROM ubuntu:18.04

# 2. 메타데이터 표시
LABEL "purpose"="ssh_test"
LABEL "author"="minggu"
ENV USER minggu1

# 3. 업데이트 및 네트워크 환경설정
#RUN ["[command]", "[parameter1]", "[parameter2]" ...]
# -y 명령어를 빼먹으면 도커 실행이 안된다. 반드시 yes 하자.
RUN yum -y update && yum -y install ntsysv initscripts net-tools sudo openssh-server openssh-clients openssh-askpass
RUN mkdir /var/run/sshd

# 4. minggu1유저에게 sudo 권한 생성
RUN sed -ri '20a'$USER'    ALL=(ALL) NOPASSWD:ALL' /etc/sudoers

# 5. .ssh 생성 및 권한주기
RUN useradd -m $USER
RUN mkdir /home/$USER/.ssh
RUN chown $USER.$USER /home/$USER/.ssh
RUN chmod 700 /home/$USER/.ssh

#6. 패스워드 설정
RUN echo 'root:root' | chpasswd
RUN echo $USER':test' | chpasswd

# 7. Generate Keys & 포트 22번 노출 지정 
RUN ssh-keygen -q -N "" -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN ssh-keygen -q -N "" -t rsa -f /root/.ssh/id_rsa
RUN cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
EXPOSE 22

#ENTRYPOINT로 미리 명령어 실행할 수 있지만 도커 실행할 때 설정하는걸로
ENTRYPOINT["/sbin/init", "systemctl start sshd", "systemctl enable sshd"]

# 8. CMD : 컨테이너 생성시 시작명령어
#CMD ["[command]", "[parameter1]", "[parameter2]" ...]
#CMD ["[parameter1]", "[parameter2" ...]
#CMD <전체커맨드>
CMD ["/usr/sbin/sshd", "-D"]

 

 

 

<참고>

https://blog.naver.com/alice_k106/220395077738

 

22. [Docker] centos:7 또는 centos:latest 이미지의 에러 : systemctl 작동 문제

우선 이 포스팅은 다음 포스트를 참조하여 작성하였음을 밝힌다. http://qiita.com/yunano/items/9637ee21a...

blog.naver.com

 

 

+ Recent posts