Computer >> 컴퓨터 >  >> 시스템 >> Linux

'Docker 데몬에 연결할 수 없습니다' 오류, 빠르게 해결하는 완벽 가이드

Docker를 실행하려는데 갑자기 "Cannot connect to the Docker daemon"(Docker 데몬에 연결할 수 없습니다) 오류가 발생한 적이 있으신가요? 시작도 하기 전에 작업을 막아버리는 가장 답답한 문제 중 하나입니다. Docker 데몬은 백그라운드에서 조용히 동작하며 컨테이너 시작·중지부터 이미지 관리, 레이어 빌드, docker run, docker ps 같은 모든 Docker 명령 처리까지 담당합니다. 터미널이 이 데몬에 도달하지 못하면 아무것도 동작하지 않습니다.

이 가이드에서는 이 오류가 발생하는 이유를 설명하고, Docker를 다시 원활하게 실행할 수 있는 간단하고 실용적인 해결 방법을 소개합니다.

Docker 데몬의 역할 이해하기

Docker 데몬(dockerd)은 컨테이너, 이미지, 네트워킹, 스토리지를 관리하는 백그라운드 서비스입니다. Docker 명령을 실행하면 CLI가 직접 이 작업을 수행하는 것이 아니라 데몬에 요청을 전달합니다. Linux 시스템에서는 "/var/run/docker.sock" 위치의 Unix 소켓을 통해 통신이 이루어지며, Docker Desktop이나 WSL 환경에서는 CLI가 가상 머신이 관리하는 네임드 파이프 또는 소켓을 통해 데몬과 통신합니다.

CLI가 데몬과 통신할 수 없으면 "Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?"와 같은 오류가 발생합니다.

 Docker 데몬에 연결할 수 없습니다  오류, 빠르게 해결하는 완벽 가이드

이 오류는 주로 다음과 같은 이유로 발생합니다:

  • Docker 서비스가 실행 중이 아님
  • 사용자에게 Docker 소켓 접근 권한이 없음
  • Docker가 잘못된 컨텍스트를 사용 중임
  • Docker 소켓이 없거나 권한이 잘못 설정됨
  • DOCKER_HOST 같은 환경 변수가 잘못 구성됨
  • 플랫폼별 문제(Docker Desktop, WSL 또는 원격 데몬)

통신 체인에서 어느 부분이 끊어졌는지 파악하는 것이 문제를 올바르게 해결하는 열쇠입니다.

사용자 권한 확인

Linux 시스템에서 Docker는 root 사용자가 소유한 Unix 소켓을 통해 통신합니다. sudo 없이 소켓에 접근하려면 사용자가 docker 그룹에 속해 있어야 합니다.

소켓 권한을 확인하려면 다음 명령을 실행하세요:

ls -l /var/run/docker.sock
 Docker 데몬에 연결할 수 없습니다  오류, 빠르게 해결하는 완벽 가이드

이 출력 결과는 소켓이 root에 의해 소유되어 있으며, docker 그룹에 속한 사용자만 읽거나 쓸 수 있음을 보여줍니다. 사용자 계정이 이 그룹에 속해 있지 않으면 Docker가 접근을 거부하고 명령 실행에 실패합니다. 이 문제를 해결하려면 다음 명령으로 사용자를 docker 그룹에 추가하세요:

sudo usermod -aG docker $USER

docker 그룹이 존재하지 않는다면 다음 명령으로 생성할 수 있습니다:

sudo groupadd docker

Docker 서비스 실행 상태 확인

또 다른 아주 간단하지만 중요한 문제는 Docker 자체가 실행되고 있지 않은 경우입니다. Docker 데몬이 중지되어 있으면 CLI가 연결할 대상이 없어 앞서 언급한 오류가 발생합니다. Docker 서비스의 현재 상태를 확인하려면 다음 명령을 실행하세요:

systemctl status docker

위 예시에서는 Docker가 활성화되어 정상적으로 실행 중입니다. 하지만 출력 결과가 inactive(dead)나 failed 상태로 표시된다면 Docker 서비스가 실행되고 있지 않다는 뜻입니다.

 Docker 데몬에 연결할 수 없습니다  오류, 빠르게 해결하는 완벽 가이드

Docker를 수동으로 시작하려면 다음 명령을 실행하세요:

sudo systemctl start docker

시스템이 부팅될 때마다 Docker가 자동으로 시작되기를 원한다면 다음 명령으로 활성화하세요:

sudo systemctl enable docker

Docker 데몬 수동 시작(dockerd)

최소 구성의 서버나 커스텀 Linux 환경에서는 Docker가 systemd로 관리되지 않을 수 있습니다. 이런 환경에서는 Docker가 설치되어 있더라도 데몬이 자동으로 시작되지 않을 수 있습니다. 데몬이 시작될 수 있는지 테스트하려면 수동으로 실행해 보세요:

sudo dockerd

출력 결과를 주의 깊게 살펴보세요. 문제가 발생하면 Docker는 일반적으로 스토리지 드라이버 문제, 권한 오류, 네트워크 충돌 등 원인을 설명하는 명확한 오류 메시지를 출력합니다.

Docker Unix 소켓 점검 및 수정

Docker CLI는 Unix 소켓을 통해 Docker 데몬과 상호작용합니다. 이 소켓이 없거나 손상되었거나 권한이 잘못 설정되어 있으면 Docker가 연결할 수 없습니다. 다음 명령으로 소켓이 존재하는지 확인할 수 있습니다:

ls /var/run/docker.sock
 Docker 데몬에 연결할 수 없습니다  오류, 빠르게 해결하는 완벽 가이드

파일이 없다면 일반적으로 Docker 데몬이 실행 중이 아니거나, 시작 과정에서 소켓 생성에 실패했다는 의미입니다. 이 경우 Docker를 재시작하여 소켓을 다시 생성해야 합니다:

sudo systemctl restart docker

소켓은 존재하지만 권한이 잘못 설정된 경우 다음 명령으로 수정하세요:

sudo chown root:docker /var/run/docker.sock
sudo chmod 660 /var/run/docker.sock
 Docker 데몬에 연결할 수 없습니다  오류, 빠르게 해결하는 완벽 가이드

Docker 컨텍스트 및 환경 변수 확인

때로는 Docker가 잘못된 엔드포인트를 가리키고 있어 데몬에 연결하지 못하는 경우가 있습니다. DOCKER_HOST 환경 변수가 잘못 설정되었거나, 활성 Docker 컨텍스트가 원격 또는 사용 불가능한 환경을 가리키고 있을 때 발생합니다.

환경 변수 확인

Docker 관련 환경 변수가 설정되어 있는지 확인하려면 다음 명령을 실행하세요:

env | grep DOCKER

DOCKER_HOST=tcp://localhost:2375 같은 값이 보인다면 Docker가 비활성 상태이거나 존재하지 않는 원격 데몬을 가리키고 있다는 뜻입니다. 변수를 해제하여 임시로 해결할 수 있습니다:

unset DOCKER_HOST

영구적으로 제거하려면 "~/.bashrc", "~/.zshrc", "/etc/environment" 같은 셸 설정 파일에서 해당 내용을 삭제하세요.

활성 Docker 컨텍스트 확인

Docker 컨텍스트는 CLI가 어떤 데몬과 통신할지 결정합니다. 사용 가능한 컨텍스트 목록과 현재 활성 컨텍스트를 확인하려면 다음 명령을 사용하세요:

docker context ls
 Docker 데몬에 연결할 수 없습니다  오류, 빠르게 해결하는 완벽 가이드

별표(*)가 현재 활성 컨텍스트를 나타냅니다. 해당 컨텍스트가 사용 불가능한 환경을 가리키고 있다면 기본 로컬 데몬으로 다시 전환하세요:

docker context use default

플랫폼별 문제

일부 연결 문제는 특정 플랫폼에서만 발생합니다. 예를 들어 Windows나 macOS의 Docker Desktop은 경량 VM 내부에서 데몬을 실행합니다. VM이 시작되지 못하면 Docker CLI가 연결할 수 없습니다. 이 경우 Docker Desktop을 재시작하면 됩니다.

마찬가지로 WSL에서 Docker를 사용할 때는 데몬이 Linux 환경에서 실행됩니다. WSL이 제대로 설치되어 실행 중인지 확인하세요:

wsl --list --running 
 Docker 데몬에 연결할 수 없습니다  오류, 빠르게 해결하는 완벽 가이드

WSL에서 Docker 데몬에 접근할 수 없다면 Docker Desktop 서비스나 해당 WSL 배포판을 재시작하는 것만으로도 문제가 해결되는 경우가 많습니다.

향후 오류 예방 팁

앞으로 "cannot connect to Docker daemon" 오류를 피하려면, 특히 시스템 업데이트 후에는 항상 Docker 서비스가 실행 중인지 확인하고, sudo 사용을 생략할 수 있도록 사용자를 docker 그룹에 추가하세요. 또한 머신 전환, WSL 배포판 변경, Docker Desktop 사용 후에는 활성 Docker 컨텍스트를 정기적으로 점검하고, 특정 원격 데몬에 연결하는 경우가 아니라면 DOCKER_HOST 설정을 피하세요. 잘못 구성된 변수는 CLI 명령을 잘못된 곳으로 유도할 수 있습니다. 더불어 journalctl -u docker.service로 데몬 로그를 모니터링하면 문제를 조기에 발견할 수 있습니다.