TechFeedTechFeed
개발자 작업환경

docker.sock, permission denied, 도커 그룹 | sudo 없이 도커가 막히면?

docker.sock permission denied는 이미지가 없어서가 아니라 소켓이 docker 그룹에만 열려 현재 사용자가 빠져 있는 줄입니다. 데몬이 꺼진 문장과 구분하고, usermod -aG 뒤 재로그인, 맥은 Desktop 실행으로 나눕니다. Docker, 우분투, 한국 1인 개발자 기준. 2026년 9월 Docker 리눅스 post-install 문서.

by

sudo 없이 docker가 permission denied를 내면 이미지가 없어서가 아니라, 도커 데몬 소켓이 root와 docker 그룹만 열리는데 지금 사용자가 그 그룹에 없는 줄입니다. 데몬이 꺼진 문장과 권한 문장은 다릅니다.

맥은 Docker Desktop이 꺼져 있으면 소켓 자체가 없고, 우분투 VPS는 설치 직후 그룹 등록이 빠져 같은 명령이 갈립니다. 소켓 파일을 777로 여는 방법은 재시작마다 되돌아가고, 그 호스트의 다른 계정까지 도커를 열게 됩니다.

그룹에 넣은 뒤 세션을 다시 열어야 반영됩니다. 근거는 Docker 리눅스 설치 후 안내에 있습니다.


데몬이 꺼진 문장과 권한 문장

문장에 permission denied가 있는지로 먼저 갈립니다.


도커 클라이언트가 하는 일은 소켓으로 데몬에게 말을 거는 것입니다. 리눅스 기본 소켓은 unix:///var/run/docker.sock입니다. 데몬이 없으면 Cannot connect to the Docker daemon ... Is the docker daemon running?이 납니다. 데몬은 있는데 이 사용자가 소켓을 못 열면 permission denied while trying to connect to the Docker daemon socket이 납니다. 이미지를 다시 받을 일이 아닙니다.


맥과 우분투가 여기서 갈립니다. 맥은 Docker Desktop 앱이 데몬을 띄웁니다. 메뉴 막대의 고래가 없으면 소켓 파일이 없고, 첫 문장이 납니다. 앱을 켜면 그룹 등록 없이 되는 경우가 많습니다. 우분투에 엔진만 설치한 VPS는 데몬이 systemctl로 살아 있어도, 로그인한 계정이 docker 그룹이 아니면 두 번째 문장이 납니다. 한국에서 싼 VPS에 넥스트를 컨테이너로 올리려다 설치 직후 이 줄에서 멈추는 경우가 많습니다.


프리즈마 바이너리가 알파인 이미지 안에 없는 오류와는 단계가 다릅니다. 컨테이너가 뜨기 전에 클라이언트가 데몬에 접속조차 못 한 상태입니다. 이미지 안의 엔진 파일은 Prisma OpenSSL 글에서 보면 됩니다.


도커 데몬이 꺼진 경우와 소켓 권한이 없는 경우를 문장으로 나누는 그림
daemon running 질문과 permission denied는 고치는 명령이 다르다. 자체 인포그래픽

리눅스에서는 그룹에 넣은 뒤 재로그인

usermod의 -a를 빼면 다른 그룹이 빠질 수 있습니다.


Docker 설치 후 문서는 사용자를 docker 그룹에 넣으라고 안내합니다. 소켓 소유는 보통 root:docker이고 모드는 0660이라, root와 그 그룹만 읽고 씁니다. 그룹에 없는 계정은 데몬이 명령을 보기 전에 운영체제가 소켓을 닫습니다.


확인할 것정상아니면
systemctl is-active dockeractivesudo systemctl start docker
ls -l /var/run/docker.sockroot docker, 0660 근처그룹이 없으면 groupadd
groups목록에 dockerusermod -aG 후 재로그인
docker run hello-world인사 문장 후 종료아직 옛 세션일 수 있음

명령은 문서 순서 그대로가 안전합니다. sudo groupadd docker는 그룹이 이미 있으면 안내만 하고 지나가도 됩니다. sudo usermod -aG docker $USER에서 -a는 추가입니다. -a 없이 -G만 쓰면 그 계정의 다른 보조 그룹이 교체될 수 있습니다. sudo 그룹까지 빠지면 다음 접속이 더 막힙니다.


그룹은 로그인 때 세션에 실립니다. usermod 직후의 같은 터미널은 아직 옛 목록입니다. 로그아웃 후 다시 들어오거나, 문서가 안내하는 newgrp docker로 새 셸을 열어야 groups에 docker가 보입니다. 가상 머신이면 재부팅이 필요한 경우도 있다고 같은 문서가 적습니다.


공식 설치 후 안내의 그룹 등록
sudo groupadd docker sudo usermod -aG docker $USER newgrp docker docker run hello-world

sudo docker를 먼저 친 뒤의 설정 파일

그룹은 맞는데 config.json만 거절되면 소유자를 바꿉니다.


그룹에 넣기 전에 sudo docker를 여러 번 치면 ~/.docker가 root 소유로 생길 수 있습니다. 그 다음부터는 소켓은 열리는데 WARNING: Error loading config file: ... permission denied가 납니다. Docker 문서는 이 디렉터리를 지우거나, 소유를 현재 사용자로 바꾸라고 합니다. 지리면 그 안의 레지스트리 로그인 설정이 사라지니, 설정을 남길 거면 chown이 맞습니다.


소켓 자체에 chmod 777을 주는 방법은 문서 절차가 아닙니다. 데몬을 재시작하면 모드가 돌아가고, 그 사이 같은 호스트의 다른 계정과 작업이 도커를 쓸 수 있습니다. 도커 그룹은 사실상 호스트를 다룰 수 있는 권한에 가깝다고 설치 후 문서가 경고합니다. 신뢰하는 내 계정만 넣고, 공용 계정을 습관처럼 넣지 않으면 됩니다.


  • [ ] 문장이 daemon running인지 permission denied인지 골랐다
  • [ ] 리눅스면 소켓 소유와 groups를 봤다
  • [ ] usermod에 -aG를 붙였다
  • [ ] 로그아웃하거나 newgrp으로 세션을 갱신했다
  • [ ] hello-world가 sudo 없이 끝났다

docker 그룹 추가 후 재로그인해야 groups에 docker가 보이는 순서 그림
usermod만으로는 현재 셸의 그룹 목록이 안 바뀐다. 자체 인포그래픽

맥에서는 앱이 데몬이다

맥의 첫 확인은 Docker Desktop이 켜져 있는지입니다.


Desktop이 꺼져 있으면 리눅스 그룹 명령을 칠 곳이 없습니다. 앱을 실행하고 고래가 안정된 뒤 docker info가 Server 항목을 보여 주면 데몬과 연결된 것입니다. 아직 Is the docker daemon running?이면 앱이 뜨는 중이거나, 소켓 경로가 예전 셸에 남아 있는 경우입니다. 터미널을 새로 열고 다시 치면 앱이 잡아 둔 경로를 탑니다.


맥에서 리눅스용 usermod를 따라 할 필요는 없습니다. 그 명령은 엔진을 리눅스에 직접 깐 서버용입니다. 국내 맥북으로 개발하고 배포만 우분투 VPS에 하는 구성이라면, 맥 오류는 앱 실행, 서버 오류는 그룹 등록으로 나누면 됩니다. 서버에서 컨테이너 포트가 이미 잡혀 EADDRINUSE가 나는 것은 소켓 권한 다음 단계입니다. 포트는 EADDRINUSE 글에서 프로세스를 찾으면 됩니다.


CI 러너에서만 같은 줄이 날 때

깃허브 호스티드 러너와 직접 깐 러너는 다릅니다.


GitHub Actions의 우분투 호스티드 러너는 도커를 쓰는 기본 이미지가 이미 데몬과 권한을 맞춰 둔 경우가 많습니다. 같은 워크플로가 내 VPS 셀프 호스티드 러너에서만 permission denied이면, 그 러너 계정이 docker 그룹에 없는 것입니다. 러너 사용자 이름으로 usermod -aG docker를 하고 러너 서비스를 재시작해야 세션이 갱신됩니다. 워크플로마다 chmod 777을 넣는 방식은 그 호스트를 열어 두므로 쓰지 않는 편이 맞습니다.


디스크 inode 감시 한도로 넥스트 dev가 멈추는 증상은 도커 소켓과 문장이 다릅니다. ENOSPC로 워처가 죽는 경우는 inotify 글을 보면 됩니다. 도커가 거절될 때는 이미지 빌드 로그보다 앞줄의 socket 문장을 먼저 읽으면 됩니다.


국내 VPS를 처음 열면 안내가 관리자 권한 예시만 보여 주는 경우가 많습니다. 그 다음 배포 스크립트는 일반 계정으로 돌면서 같은 줄에서 멈춥니다. 지금 터미널의 계정과 서비스가 쓰는 계정이 같은지부터 보세요. 설치는 관리자로 하고 실행은 다른 이름으로 하면 그룹이 설치한 쪽에만 남습니다. 사람 손으로 친 명령은 되는데 자동 실행만 거절되면 계정 이름이 다른 것입니다. 이미지 이름이나 태그를 고치기 전에 이 계정부터 맞추는 편이 빠릅니다. 그룹을 넣은 날 바로 배포가 실패하면, 서비스를 한 번 재시작해야 새 그룹이 프로세스에 실립니다.


소켓의 소유를 보기 전에, 지금 셸이 어느 이름인지를 먼저 적어둡니다. 안내를 그대로 복사해 관리자 이름에만 그룹을 넣고, 실제 배포는 다른 이름으로 하면 목록이 어긋납니다. 손으로 치는 계정과 자동으로 도는 계정이 둘 다 그룹에 있어야 같은 명령이 같이 통과합니다. 그룹을 넣은 직후 자동 실행만 실패하면 프로세스가 예전 자격으로 남아 있는 것이니, 그 서비스를 한 번 내렸다 올리면 새 자격이 적용됩니다. 저장소 주소나 이미지 이름을 의심하기 전에 이 두 이름을 맞추세요.


777은 해결이 아닙니다 | 소켓 모드를 모두에게 열면 데몬 재시작 때 되돌아가고, 그 전에도 같은 머신의 다른 사용자가 컨테이너로 호스트를 다룰 수 있습니다. 내 계정만 docker 그룹에 넣고 세션을 다시 여세요.


sudo로 만든 설정 디렉터리 소유 되돌리기
sudo chown "$USER":"$USER" "$HOME/.docker" -R sudo chmod g+rwx "$HOME/.docker" -R docker run hello-world
맥은 Docker Desktop 실행, 리눅스 서버는 docker 그룹 등록으로 갈라 보는 그림
맥북과 VPS의 막힌 지점이 다르면 명령도 다르게 고른다. 자체 인포그래픽

참고 자료

그룹 등록을 적은 공식 문서만 여기 모아 둡니다.



내부 연계: 프리즈마 엔진과 알파인, 포트 점유, inotify 감시 한도


인용한 그룹 절차는 2026년 9월 22일 공개 문서 기준입니다.


자주 묻는 질문

소켓 권한에서 자주 나오는 질문만 답을 적습니다.


sudo docker는 되는데 그냥 docker만 막힙니다.

데몬은 살아 있고 소켓 권한만 없는 상태입니다. 현재 사용자를 docker 그룹에 usermod -aG로 넣은 뒤 로그아웃하거나 newgrp docker로 새 셸을 여세요. sudo가 되는 것은 root라서 소켓을 열 수 있다는 뜻입니다.


usermod를 했는데 groups에 docker가 없습니다.

그룹 목록은 로그인 때 읽어 옵니다. 같은 터미널은 옛 목록을 유지합니다. 터미널을 완전히 닫고 다시 접속하거나 newgrp docker를 실행한 뒤 groups를 다시 보세요.


-a 없이 -G만 치면 무슨 일이 나나요?

-G만 쓰면 보조 그룹 목록을 그 인자로 바꿀 수 있습니다. sudo나 wheel이 빠져 다음 관리 명령이 막힐 수 있습니다. 추가는 -aG로 적습니다.


맥북에서도 groupadd를 해야 하나요?

Docker Desktop을 쓰는 맥은 앱을 켜는 것으로 데몬이 붙습니다. groupadd와 usermod는 리눅스에 엔진을 직접 설치했을 때의 절차입니다. Is the docker daemon running이면 앱이 꺼진 쪽부터 보세요.


chmod 777로 소켓을 열어도 되나요?

문서 절차가 아니고, 데몬 재시작 때 모드가 돌아갑니다. 그 전에 같은 머신의 다른 사용자가 도커로 호스트를 다룰 수 있습니다. 내 계정만 그룹에 넣으세요.


hello-world는 되는데 내 이미지만 실패합니다.

소켓 권한은 이미 통과한 것입니다. 그 다음의 포트 충돌, 이미지 안의 바이너리, 빌드 로그를 봐야 합니다. permission denied 문장이 사라졌다면 그룹 문제는 끝난 상태입니다.


docker가 소켓에서 막히면 데몬이 꺼진 문장인지 권한 문장인지부터 보면 됩니다. 리눅스는 docker 그룹에 -aG로 넣고 세션을 다시 열고, 맥은 Desktop 앱을 켜면 됩니다. 소켓을 777로 열 필요는 없습니다. 관련 글: 알파인 엔진, 포트 점유, inotify.


docker.sockpermission denied도커 그룹usermodDocker Desktop우분투작업환경소켓개발자
EXPLORE / 개발자 작업환경

이어서 읽어보기

전체 토픽 둘러보기