본문 바로가기

리눅스

[draft] Docker 데몬 소켓 연결 권한 오류 해결

Docker 데몬 소켓 연결 권한 오류 해결

Docker 명령 실행 시 아래와 같은 오류가 발생할 수 있습니다.

permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

예시

docker ps -a
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json?all=1": dial unix /var/run/docker.sock: connect: permission denied

이 오류는 현재 사용자가 Docker 데몬 소켓(/var/run/docker.sock)에 접근 권한이 없기 때문에 발생합니다.

1. Docker 소켓 파일 권한 확인

Docker 소켓 파일의 권한을 확인합니다.

ls -l /var/run/docker.sock
srw-rw---- 1 root docker 0 Jan 23 14:28 /var/run/docker.sock

docker 그룹에 속하지 않은 사용자는 Docker 명령을 실행할 수 없습니다.

2. 임시 해결 방법 (권한 변경)

Docker 소켓에 모든 사용자 접근 권한을 부여합니다.

sudo chmod 666 /var/run/docker.sock

권한 변경 확인

ls -l /var/run/docker.sock
srw-rw-rw- 1 root docker 0 Feb  1 13:17 /var/run/docker.sock

Docker 명령을 실행하면 정상 동작합니다.

docker ps
CONTAINER ID   IMAGE                      COMMAND                  CREATED        STATUS        PORTS                                                                          NAMES
b158bb6a2a92   anti1346/centos7:systemd   "/usr/lib/systemd/sy…"   18 hours ago   Up 18 hours   0.0.0.0:2222->22/tcp, :::2222->22/tcp, 0.0.0.0:8082->80/tcp, :::8082->80/tcp   centos7-systemd

3. 권장 해결 방법 (docker 그룹 추가)

사용자를 docker 그룹에 추가하는 방식이 권장됩니다.

 

docker 그룹에 사용자 추가

sudo usermod -aG docker $USER

또는 특정 사용자 지정

sudo usermod -aG docker ubuntu

그룹 적용

  • 로그아웃 후 재로그인하거나 다음 명령 실행
newgrp docker

확인

docker ps

sudo 없이 Docker 명령 실행이 가능해야 합니다.

4. 보안 참고 사항

chmod 666 /var/run/docker.sock 방식은 모든 사용자에게 Docker 제어 권한을 부여합니다.

 

Docker 데몬 권한은 사실상 root 권한과 동일한 수준이므로 다음과 같은 위험이 있습니다.

  • 컨테이너 생성 및 삭제
  • 호스트 파일 시스템 접근
  • root 권한 상승 가능

따라서 운영 환경에서는 다음 방법을 권장합니다.

  • ✔ docker 그룹 사용자만 허용
  • ✔ sudo 사용
  • ✔ rootless docker 사용

5. 권한 문제 진단 명령어

현재 사용자 그룹 확인

id

docker 그룹 확인

getent group docker

docker 서비스 상태 확인

systemctl status docker