Docker permission denied: daemon 소켓 권한 오류를 최소 권한으로 해결하기
Linux에서 Docker 소켓 접근이 거부될 때 서비스 상태와 사용자 그룹을 확인하고, 무분별한 chmod 없이 권한을 수정하는 방법입니다.
DockerLinux
짧은 요약
/var/run/docker.sock 권한 오류는 현재 사용자가 Docker 데몬 소켓에 접근할 수 없다는 뜻입니다. 서비스 상태를 먼저 확인하고 필요한 경우 사용자를 docker 그룹에 추가한 뒤 세션을 다시 시작하세요. 소켓을 777로 바꾸면 안 됩니다.
증상과 환경
permission denied while trying to connect to the Docker daemon socketLinux에서 일반 사용자로 docker ps를 실행할 때 주로 나타납니다.
원인
Docker 서비스가 멈췄거나 현재 사용자가 소켓 소유 그룹에 포함되지 않았습니다. 루트리스 Docker와 일반 Docker의 환경변수가 섞인 경우도 있습니다.
재현 예시
id
ls -l /var/run/docker.sock
docker context show
docker ps현재 그룹 목록에 소켓의 그룹이 없으면 접근이 거부됩니다.
단계별 해결법
1. 서비스 상태 확인
systemctl status docker --no-pager서비스가 설치되어 있지만 중지됐다면 운영 정책을 확인한 뒤 시작합니다.
sudo systemctl start docker2. 그룹 권한 확인
getent group docker
sudo usermod -aG docker "$USER"그룹 변경은 기존 셸에 즉시 반영되지 않습니다. 로그아웃 후 다시 로그인하거나 새 로그인 세션을 사용하세요.
3. 다시 확인
id
docker info
docker run --rm hello-world확인법
docker info가 권한 오류 없이 서버 정보를 보여주고 테스트 컨테이너가 정상 종료되는지 확인합니다.
주의사항
docker 그룹 사용자는 사실상 높은 시스템 권한을 가질 수 있습니다. 공유 서버에서는 사용자를 무조건 그룹에 추가하지 말고 루트리스 Docker나 별도 실행 정책을 검토하세요. /var/run/docker.sock에 chmod 777을 적용하지 마세요.
관련 이슈
- Docker Desktop context 불일치
- 루트리스 Docker의 DOCKER_HOST 설정
- CI 실행 계정의 소켓 마운트 권한