Docker permission denied 오류: daemon socket 권한 문제 해결 방법

Docker 명령이나 docker compose up을 실행할 때 다음 오류가 발생할 수 있습니다.

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

이 오류는 Docker 서비스가 중지된 경우에도 발생할 수 있지만, Docker 서비스는 실행 중인데 현재 사용자가 /var/run/docker.sock에 접근할 권한이 없을 때 자주 나타납니다.

적용 범위: Ubuntu 등 systemd 기반 Linux와 Docker Engine을 WSL 배포판 내부에서 직접 실행하는 환경을 기준으로 합니다. Docker Desktop 또는 Rancher Desktop을 사용하는 경우에는 Docker context와 WSL 연동 설정도 함께 확인해야 합니다.

가장 빠른 해결 방법

sudo systemctl status docker
sudo usermod -aG docker "$USER"
newgrp docker
id -nG
docker ps

서비스가 active (running)이고 사용자 그룹에 docker가 없다면, 사용자를 그룹에 추가한 뒤 로그아웃하고 다시 로그인하는 것이 가장 확실합니다.

1. Docker 서비스 상태 확인

sudo systemctl status docker

정상적인 경우 Active: active (running)이 표시됩니다. 실행 중이 아니라면 다음을 사용합니다.

sudo systemctl enable --now docker

시작에 실패하면 최근 로그를 확인합니다.

sudo journalctl -u docker --no-pager -n 100

2. 현재 사용자의 그룹 확인

groups
id -nG

결과에 docker가 없다면 현재 사용자는 Docker 소켓을 사용할 권한이 없습니다.

getent group docker

Docker 그룹이 없다면 생성한 뒤 현재 사용자를 추가합니다.

sudo groupadd docker
sudo usermod -aG docker "$USER"

groupadd는 그룹이 실제로 없을 때만 실행합니다. -aG에서 -a를 빼면 기존 보조 그룹 구성이 의도치 않게 바뀔 수 있습니다.

3. 그룹 변경 사항을 세션에 적용

usermod를 실행해도 이미 열린 로그인 세션에는 그룹 정보가 즉시 반영되지 않습니다. 로그아웃 후 다시 로그인하는 방법이 가장 확실합니다.

newgrp docker
id -nG
docker ps

WSL 전체를 종료해야 할 때는 Windows PowerShell에서 다음을 사용할 수 있습니다.

wsl --shutdown

실행 중인 WSL 작업이 모두 종료되므로 저장되지 않은 작업이 없는지 먼저 확인합니다.

4. Docker 소켓 권한 확인

ls -l /var/run/docker.sock

일반적인 환경에서는 다음과 비슷하게 표시됩니다.

srw-rw---- 1 root docker ... /var/run/docker.sock

소켓이 없으면 Docker daemon이 실행되지 않았거나 다른 엔드포인트를 사용하고 있을 수 있습니다.

sudo systemctl restart docker
ls -l /var/run/docker.sock

5. Docker context와 DOCKER_HOST 확인

docker context show
docker context ls
echo "$DOCKER_HOST"

Docker Desktop, Rancher Desktop 또는 Podman을 함께 사용했다면 현재 사용하려는 엔진의 context인지 확인합니다.

6. 정상 동작 확인

id -nG
docker version
docker ps
docker run --rm hello-world

Docker Compose 프로젝트에서는 다시 실행합니다.

docker compose up

7. sudo docker는 되는데 docker는 안 될 때

sudo docker ps는 정상이고 docker ps만 실패한다면 일반 사용자 권한 문제일 가능성이 높습니다.

보안 주의: docker 그룹은 Docker daemon을 통해 호스트에 높은 권한으로 접근할 수 있으므로 신뢰할 수 있는 사용자에게만 부여해야 합니다. 보안 요구사항이 높은 환경에서는 Docker rootless mode도 검토할 수 있습니다.

8. .docker/config.json 권한 오류가 함께 나타날 때

ls -ld "$HOME/.docker"
ls -l "$HOME/.docker/config.json"

소유권 문제가 확인된 경우에만 복구합니다.

sudo chown -R "$USER":"$USER" "$HOME/.docker"
sudo chmod -R u+rwX,go-rwx "$HOME/.docker"

하면 안 되는 해결 방법

sudo chmod 666 /var/run/docker.sock

모든 로컬 사용자에게 Docker daemon 접근을 허용하므로 권장하지 않습니다.

원인별 빠른 정리

증상 원인 조치
서비스 inactive daemon 미실행 sudo systemctl enable --now docker
서비스 active, docker 그룹 없음 그룹 권한 누락 sudo usermod -aG docker "$USER" 후 재로그인
socket 없음 daemon 미실행 또는 다른 엔드포인트 서비스와 context 확인
sudo docker만 정상 일반 사용자 권한 없음 docker 그룹 등록
context가 다른 엔진 Docker 엔진 선택 오류 context 변경

검증 환경과 참고

Docker 서비스가 active (running) 상태이고 현재 사용자의 그룹 목록에 docker가 없어 소켓 접근이 거부된 Linux 사례를 기준으로 작성했습니다.

검증일: 2026-07-11