다음 명령으로 사용자를 docker 그룹에 추가했는데도 docker ps에서 계속 권한 오류가 발생할 수 있습니다.
sudo usermod -aG docker "$USER"
WSL2에서는 Windows Terminal 탭만 닫았다가 다시 여는 것으로 기존 Linux 로그인 세션이 완전히 종료되지 않을 수 있습니다.
핵심 요약
id -nG에서docker그룹이 실제로 보이는지 먼저 확인합니다. 보이지 않으면 로그아웃하거나newgrp docker를 사용하고, 그래도 적용되지 않으면 PowerShell에서wsl --shutdown으로 WSL 전체를 종료한 뒤 다시 시작합니다.
1. 현재 셸의 그룹 확인
id -nG
또는:
groups
출력에 docker가 없으면 현재 셸에는 새 그룹 정보가 아직 적용되지 않은 것입니다.
2. 계정이 docker 그룹에 등록됐는지 확인
getent group docker
예상 형식:
docker:x:999:사용자명
사용자명이 없다면 다시 등록합니다.
sudo usermod -aG docker "$USER"
현재 사용자명을 명확히 확인하려면:
whoami
다른 계정에 그룹을 추가하지 않았는지 함께 확인합니다.
3. 현재 셸에서 새 그룹 적용
빠르게 시험하려면 다음을 실행합니다.
newgrp docker
새 셸에서 확인합니다.
id -nG
docker ps
newgrp는 새 그룹이 적용된 하위 셸을 시작합니다. 원래 셸로 돌아가려면 다음을 입력합니다.
exit
장기적으로는 로그아웃한 뒤 다시 로그인하는 방식이 더 명확합니다.
4. WSL 전체 종료 후 다시 시작
Windows PowerShell에서 실행합니다.
wsl --shutdown
이 명령은 실행 중인 모든 WSL 배포판과 작업을 종료합니다. 저장하지 않은 터미널 작업이 없는지 먼저 확인합니다.
종료 상태를 확인합니다.
wsl -l -v
다시 Ubuntu 등 사용하는 배포판을 실행한 뒤 Linux 셸에서 확인합니다.
id -nG
docker ps
5. Docker 소켓 권한 확인
ls -l /var/run/docker.sock
일반적인 Docker Engine 환경에서는 다음과 비슷합니다.
srw-rw---- 1 root docker ... /var/run/docker.sock
현재 사용자가 docker 그룹에 있는데도 접근이 안 된다면 현재 셸의 실제 그룹과 소켓 그룹이 일치하는지 비교합니다.
id
stat -c '%U %G %a %n' /var/run/docker.sock
임시 해결을 위해 다음처럼 모든 사용자에게 소켓을 개방하지 않습니다.
sudo chmod 666 /var/run/docker.sock
6. Docker 엔진과 context 확인
WSL 안에서 Docker Engine을 직접 실행하는지, Docker Desktop 또는 Rancher Desktop 연동을 사용하는지 구분해야 합니다.
docker context show
docker context ls
echo "$DOCKER_HOST"
Docker Desktop이나 Rancher Desktop이 제공하는 context를 사용한다면 /var/run/docker.sock의 로컬 그룹 권한만 수정해도 해결되지 않을 수 있습니다.
Docker 서비스가 WSL 내부에 존재하는지도 확인합니다.
systemctl status docker
Unit docker.service could not be found라면 WSL 내부 Docker Engine이 아니라 외부 Desktop 제품의 WSL 통합을 사용하는 구성일 수 있습니다.
정상 확인 순서
whoami
id -nG
getent group docker
ls -l /var/run/docker.sock
docker context show
docker version
docker ps
빠른 판단표
| 확인 결과 | 의미 | 다음 조치 |
|---|---|---|
getent group docker에 사용자 없음 |
그룹 등록 실패 또는 다른 사용자 등록 | usermod -aG 재실행 |
그룹에는 등록됐지만 id -nG에 없음 |
현재 로그인 세션 미갱신 | 재로그인 또는 newgrp |
| WSL 재실행 후에도 소켓 없음 | daemon 미실행 또는 외부 엔진 사용 | 서비스와 context 확인 |
| local socket은 정상인데 다른 context 사용 | 다른 엔진으로 연결 중 | 사용할 context 선택 |
검증일: 2026-07-11