“Docker 데몬에 연결할 수 없습니다” 오류 해결 방법: 단계별 가이드

“Docker 데몬에 연결할 수 없습니다” 오류 해결 방법: 단계별 가이드

Docker를 실행하려고 할 때 “Docker 데몬에 연결할 수 없습니다”라는 오류 메시지를 접한 적이 있으신가요? 이 흔한 문제는 시작부터 진행을 멈추게 할 수 있습니다. Docker 데몬은 백그라운드에서 조용히 작동하며 컨테이너 수명 주기 관리부터 이미지 처리, `docker run` 및 `docker run` docker run과 같은 명령어 실행까지 모든 것을 처리합니다 docker ps.터미널이 데몬에 연결할 수 없다는 것은 Docker 작업에 문제가 발생했음을 의미합니다.

이 종합 가이드에서는 이 오류의 원인을 자세히 살펴보고 Docker를 다시 정상적으로 작동시키는 데 도움이 되는 간단한 해결 방법을 제공합니다.

Docker Daemon의 역할

Docker 데몬( dockerd 라고도 함 )은 Docker 환경에서 컨테이너, 이미지, 네트워킹 및 스토리지를 관리하는 데 필수적인 백그라운드 서비스입니다.명령줄 인터페이스(CLI)에서 실행되는 명령은 직접 처리되지 않고, 이 데몬으로 전송되어 실행됩니다. Linux 시스템에서는. NET Framework의 Unix 소켓을 통해 통신이 이루어집니다 /var/run/docker.sock. Docker Desktop 및 WSL(Windows Subsystem for Linux)에서는 가상 머신에서 관리하는 명명된 파이프 또는 소켓을 통해 상호 작용합니다.

CLI가 데몬에 연결하지 못하면 “unix:///var/run/docker.sock의 Docker 데몬에 연결할 수 없습니다. Docker 데몬이 실행 중입니까?”와 같은 오류 메시지가 표시될 수 있습니다.

Docker 데몬에 연결할 수 없습니다.

이 문제는 다음과 같은 다양한 요인으로 인해 발생할 수 있습니다.

  • Docker 서비스가 현재 실행 중이 아닙니다.
  • 사용자 계정에 Docker 소켓에 접근할 권한이 없습니다.
  • Docker 컨텍스트가 잘못 설정되었습니다.
  • Docker 소켓이 없거나 권한이 잘못되었습니다.
  • 환경 변수가 DOCKER_HOST잘못 구성되었습니다.
  • 플랫폼별 문제, 특히 Docker Desktop, WSL 또는 원격 데몬과 관련된 문제입니다.

사용자 권한 확인

Linux 시스템에서 Docker CLI는 루트 사용자가 소유한 Unix 소켓을 통해 통신합니다.`–` 명령어를 사용하지 않고 Docker 명령어를 실행하려면 sudo사용자는 Docker 그룹에 속해야 합니다.다음 명령어를 사용하여 소켓의 권한을 확인할 수 있습니다.

ls -l /var/run/docker.sock

소켓 권한 확인

출력 결과는 소켓의 소유자가 root이며 Docker 그룹에 속한 사용자만 해당 소켓과 상호 작용할 수 있음을 나타냅니다.만약 당신이 이 그룹의 구성원이 아니라면 Docker는 당신의 요청을 거부할 것입니다.이 문제를 해결하려면 다음 명령어를 사용하여 사용자 계정을 Docker 그룹에 추가하십시오.

sudo usermod -aG docker $USER

Docker 그룹이 존재하지 않으면 다음 명령어를 사용하여 생성하십시오.

sudo groupadd docker

Docker 서비스가 활성화되어 있는지 확인

Docker 서비스가 실행 중인지 확인하는 것이 중요합니다.데몬이 중지된 경우 CLI가 연결할 수 없어 동일한 오류가 발생합니다.다음 명령을 실행하여 Docker 서비스 상태를 확인할 수 있습니다.

systemctl status docker

출력 결과에 Docker가 비활성 상태이거나 실패했다고 표시되면 서비스가 실행되고 있지 않은 것입니다.

Docker 서비스가 실행 중인지 확인하십시오.

Docker를 수동으로 시작하려면 다음 명령어를 사용하십시오.

sudo systemctl start docker

Docker가 시스템 시작 시 자동으로 실행되도록 하려면 다음 명령을 사용하세요.

sudo systemctl enable docker

Docker 데몬의 수동 시작

최소 사양 서버 또는 사용자 지정 Linux 배포판에서는 Docker가 systemd에 의해 관리되지 않을 수 있으며, 이 경우 데몬이 자동으로 시작되지 않을 수 있습니다.데몬의 기능을 테스트하려면 직접 실행해 보세요.

sudo dockerd

출력 내용을 주의 깊게 살펴보세요.문제가 발생할 경우 Docker는 일반적으로 스토리지 드라이버 문제 또는 권한 충돌과 같은 문제를 자세히 설명하는 명확한 오류 메시지를 제공합니다.

Docker Unix 소켓 검사 및 수정

CLI와 데몬 간의 통신은 유닉스 소켓을 통해 이루어집니다.이 소켓이 손상되거나 연결이 끊어지면 연결이 종료됩니다.소켓의 존재 여부를 확인하려면 다음 명령을 실행하십시오.

ls /var/run/docker.sock

Docker Unix 소켓 검사

소켓 파일이 없는 경우, 일반적으로 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 관련 환경 변수가 설정되어 있는지 확인하려면 다음 명령을 실행하세요.

env | grep DOCKER

만약 이 오류가 발생한다면 DOCKER_HOST=tcp://localhost:2375, 활성화되지 않은 원격 데몬을 가리키고 있을 가능성이 있습니다.변수를 해제하면 이 문제를 일시적으로 해결할 수 있습니다.

unset DOCKER_HOST

이를 영구적으로 제거하려면 ~/.bashrc, ~/.zshrc 또는 /etc/environment 와 같은 셸 구성 파일을 편집하십시오.

활성 Docker 컨텍스트 확인

Docker 컨텍스트는 CLI가 연결해야 할 데몬을 지정합니다.다음 명령을 사용하여 사용 가능한 컨텍스트 목록을 확인하고 현재 활성화된 컨텍스트를 식별할 수 있습니다.

docker context ls

활성 Docker 컨텍스트를 확인하세요

활성화된 컨텍스트는 별표(*)로 표시됩니다.해당 컨텍스트가 사용 불가능한 환경을 가리키는 경우 기본 로컬 데몬으로 되돌아갑니다.

docker context use default

플랫폼별 과제 해결

연결 오류는 특정 플랫폼에서 발생할 수도 있습니다.예를 들어, Windows 또는 macOS용 Docker Desktop은 경량 가상 머신 내에서 실행됩니다.가상 머신이 시작되지 않으면 CLI에서 연결할 수 없습니다. Docker Desktop을 다시 시작하면 이 문제를 해결할 수 있습니다.

마찬가지로 WSL에서 Docker를 사용할 때는 WSL이 정상적으로 작동하는지 확인하여 환경이 올바르게 설정되었는지 확인하십시오.

wsl --list --running

WSL 관련 특정 문제

WSL에서 Docker 데몬에 접근할 수 없는 경우, Docker Desktop 또는 WSL 배포판을 재시작하면 문제가 해결되는 경우가 많습니다.

향후 오류를 예방하기 위한 전략

“Docker 데몬에 연결할 수 없습니다” 오류 발생 가능성을 최소화하려면 시스템 업데이트 후 Docker 서비스가 활성화되어 있는지 확인하고, Docker 그룹에 사용자를 추가하여 연결 우회를 설정하십시오 sudo.특히 시스템을 변경하거나 다른 Docker 환경을 사용한 후에는 활성 Docker 컨텍스트를 정기적으로 확인하십시오.또한, DOCKER_HOST잘못된 설정으로 인해 명령이 잘못 리디렉션될 수 있으므로 불필요한 수정은 피하십시오. Docker 로그를 모니터링하여 journalctl -u docker.service문제를 사전에 파악하고 해결할 수도 있습니다.

출처 및 이미지

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다