
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock가 보이면 이미지나 컨테이너 문제라고 단정하지 마세요. 먼저 현재 CLI가 어느 Docker 데몬에 연결하려는지, 소켓이 존재하는지, 현재 사용자에게 접근 권한이 있는지를 분리해서 확인해야 합니다. 특히 단순히 소켓 권한을 모두에게 열면 로컬 보안 경계가 무너질 수 있습니다.
1. 오류가 말하는 것은 무엇인가
Linux Docker Engine의 기본 접속 경로는 Unix 소켓입니다. Docker 데몬 문서는 기본 소켓이 루트 또는 허용된 그룹의 접근을 받는다고 설명합니다. 이 오류는 데몬이 멈췄을 때 나오는 “Cannot connect”와 구분해야 합니다. 또한 Docker Desktop, rootless Engine, 원격 Docker context를 사용하는 경우 실제 소켓 경로가 다를 수 있습니다.
2. 읽기 전용 진단 순서
아래 명령은 현재 문맥과 권한을 관찰하기 위한 예시입니다. docker info 출력에는 비공개 시스템 정보가 있을 수 있으니 공개 게시판에 그대로 올리지 마세요.
docker context show
id -nG
ls -l /var/run/docker.sock
systemctl is-active docker
첫째, docker context show로 실제 대상이 로컬 Linux Engine인지 판단합니다. DOCKER_HOST 환경 변수가 설정돼 있다면 그 값도 확인합니다. 둘째, 소켓 소유자·그룹과 현재 사용자의 그룹을 비교합니다. 셋째, 대상이 로컬 systemd 서비스일 때만 서비스 상태를 확인합니다. Docker Desktop이나 원격 context에는 마지막 명령이 직접적인 증거가 아닐 수 있습니다.
3. 원인별 조치 비교표
| 관찰 결과 | 가능한 원인 | 안전한 다음 단계 |
| 소켓은 있고 그룹만 불일치 | 현재 계정에 접근 권한 없음 | 운영 정책에 맞는 권한 부여 방식을 관리자와 결정 |
| 소켓이 없음 | 데몬 미실행 또는 다른 context | 서비스·Docker Desktop·원격 주소 확인 |
| 그룹 추가 뒤에도 실패 | 기존 로그인 세션에 그룹이 미반영 | 새 로그인 세션에서 그룹 확인 |
| rootless 사용 중 | 기본 소켓이 아닌 사용자별 소켓 사용 | rootless context와 사용자 서비스를 확인 |
| CI 컨테이너 안에서 실패 | 호스트 소켓 마운트·권한 경계 문제 | 러너 설계를 재검토, 무분별한 소켓 공유 피하기 |
4. docker 그룹 추가는 보안 결정입니다
Docker 공식 설치 후 설정은 docker 그룹이 사실상 루트 수준의 권한을 준다고 명시합니다. 따라서 팀 서버에서 사용자를 그룹에 추가하는 일은 단순한 편의 설정이 아니라 권한 확대입니다. 운영 정책과 계정 감사 범위를 확인한 뒤 적용하세요. chmod 666 /var/run/docker.sock처럼 모든 로컬 사용자에게 소켓을 여는 방식은 해결책으로 권하지 않습니다.
루트 권한을 줄여야 한다면 Docker rootless mode 문서를 검토하세요. 다만 설치 조건과 네트워크·스토리지 제약이 있으므로 운영 환경에서 시험해야 합니다. sudo docker로 한 번 동작했다고 해서 일반 사용자 권한 문제가 사라진 것도 아닙니다.
5. 자주 묻는 질문
소켓 파일을 소유자 변경하면 되나요? Docker 서비스가 소켓을 재생성할 수 있고 의도한 접근 정책도 깨질 수 있습니다. 먼저 서비스 구성과 권한 모델을 확인하세요.
Mac의 Docker Desktop에서도 같은 명령을 쓰나요? 아닙니다. Linux systemd와 소켓 소유권 절차를 그대로 적용하지 말고 현재 Docker context와 Desktop 상태를 확인해야 합니다.
CI에서 호스트 Docker 소켓을 공유해도 되나요? 빌드 편의성은 있지만 호스트 데몬에 대한 강한 권한을 부여할 수 있습니다. 신뢰하지 않는 작업과 공유하지 않도록 실행 환경을 설계하세요.
6. 조치 뒤 검증할 항목
허용된 계정으로 새 세션을 열어 id -nG, docker context show, docker version의 서버 연결을 확인합니다. 그다음 필요한 이미지 조회나 테스트 컨테이너 실행을 진행하세요. 연결은 되는데 레지스트리에서 TLS 오류가 난다면 권한 문제와 다른 원인이므로 기존 Docker x509 인증서 오류 글을 참고하세요.
자료 확인: 2026년 9월 29일. 노출 가능성은 실측 검색량이 아닌 구체적인 오류 문자열과 문제 해결 의도를 근거로 한 추정입니다.
'소프트웨어개발' 카테고리의 다른 글
| Kubernetes Pod Pending 해결: 자원 부족·taint·PVC·스케줄링 점검 (0) | 2026.09.29 |
|---|---|
| 기업용 Redis 캐시 운영 선택: Amazon ElastiCache와 자체 구축 비용·복구 비교 (0) | 2026.09.29 |
| GitHub Actions와 GitLab CI 비교: 기업용 CI/CD 비용·러너·권한 선택 기준 (0) | 2026.09.29 |