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

'Docker 데몬에 연결할 수 없습니다' 오류를 신속하게 해결하세요.

Docker 실행을 시도했는데 갑자기 “Docker 데몬에 연결할 수 없습니다라는 메시지가 나타났습니다. ” 오류? 이는 시작하기도 전에 중단될 수 있는 가장 실망스러운 문제 중 하나입니다. Docker 데몬은 백그라운드에서 조용히 실행되어 컨테이너 시작 및 중지부터 이미지 관리, 레이어 구축, docker run와 같은 모든 Docker 명령 처리에 이르기까지 모든 작업을 처리합니다. , docker ps 등. 터미널에 연결할 수 없으면 아무 것도 작동하지 않습니다. 

이 가이드에서는 이 오류가 발생하는 이유를 설명하고 Docker를 다시 원활하게 실행하기 위한 간단하고 실용적인 수정 방법을 보여 드리겠습니다.

목차

Docker 데몬의 기능 이해

Docker 데몬(dockerd)은 컨테이너, 이미지, 네트워킹 및 스토리지 관리를 담당하는 백그라운드 서비스입니다. Docker 명령을 실행할 때 CLI는 이러한 작업을 자체적으로 수행하지 않습니다. 대신 데몬에 요청을 보냅니다. Linux 시스템에서 이 통신은 "/var/run/docker.sock"에 있는 Unix 소켓을 통해 이루어집니다. Docker Desktop 또는 WSL 환경에서 CLI는 명명된 파이프 또는 가상 머신이 관리하는 소켓을 통해 데몬과 통신합니다.

CLI가 데몬과 통신할 수 없는 경우 "unix:///var/run/docker.sock에서 Docker 데몬에 연결할 수 없습니다. Is the docker daemon running?과 같은 오류가 발생합니다. “.

 Docker 데몬에 연결할 수 없습니다  오류를 신속하게 해결하세요.

이러한 현상은 다음 중 한 가지 이유 때문에 발생하는 경우가 많습니다:

  • Docker 서비스가 실행되고 있지 않습니다.
  • 사용자에게 Docker 소켓에 액세스할 수 있는 권한이 없습니다.
  • Docker가 잘못된 컨텍스트를 사용하고 있습니다.
  • Docker 소켓이 없거나 잘못된 권한이 있습니다.
  • DOCKER_HOST와 같은 환경 변수 잘못 구성되었습니다.
  • 플랫폼 관련 문제(Docker Desktop, WSL 또는 원격 데몬).

이 통신 체인의 어느 부분이 손상되었는지 식별하는 것이 문제를 올바르게 해결하는 열쇠입니다.

사용자 권한 확인

Linux 시스템에서 Docker는 루트 사용자가 소유한 Unix 소켓을 통해 통신합니다. sudo 없이 액세스하려면 사용자가 Docker 그룹에 속해야 합니다. .

소켓 권한을 확인하려면 다음 명령을 실행하십시오:

ls -l /var/run/docker.sock
 Docker 데몬에 연결할 수 없습니다  오류를 신속하게 해결하세요.

이 출력은 소켓이 루트의 소유이고 docker 그룹에 속한 사용자만 소켓에서 읽거나 쓸 수 있음을 알려줍니다. 사용자 계정이 이 그룹의 일부가 아닌 경우 Docker는 액세스를 거부하고 명령 실행에 실패합니다. 이 문제를 해결하려면 Docker 그룹에 사용자를 추가해야 합니다:

sudo usermod -aG docker $USER

Docker 그룹이 존재하지 않는 경우 다음 명령을 사용하여 생성할 수 있습니다:

sudo groupadd docker

Docker 서비스가 실행 중인지 확인

매우 간단하면서도 중요한 또 다른 문제는 Docker가 전혀 실행되지 않을 수 있다는 것입니다. Docker 데몬이 중지되면 Docker CLI에 연결할 항목이 없으므로 명시된 오류가 발생합니다. Docker 서비스의 현재 상태를 확인하려면 다음 명령을 실행하세요:

systemctl status docker

우리의 경우 Docker가 활성화되어 성공적으로 실행되고 있습니다. 그러나 출력에 비활성(죽음) 또는 실패와 같은 상태가 표시되면 Docker 서비스가 실행되고 있지 않음을 의미합니다.

 Docker 데몬에 연결할 수 없습니다  오류를 신속하게 해결하세요.

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

sudo systemctl start docker

시스템이 부팅될 때마다 Docker가 자동으로 시작되도록 하려면 다음 명령을 사용하여 활성화하세요:

sudo systemctl enable docker

수동으로 Docker 데몬 시작(dockerd)

최소 서버 또는 사용자 정의 Linux 설정에서는 Docker가 systemd로 관리되지 않을 수 있습니다. 이러한 환경에서는 Docker가 설치되어 있어도 Docker 데몬이 자동으로 시작되지 않을 수 있습니다. 데몬이 시작될 수 있는지 테스트하려면 수동으로 실행해 보세요:

sudo dockerd

출력을 주의 깊게 모니터링하십시오. 문제가 발생하면 Docker는 일반적으로 스토리지 드라이버 문제, 권한 오류 또는 네트워크 충돌과 같은 문제를 설명하는 명확한 오류 메시지를 인쇄합니다.

Docker Unix 소켓 검사 및 수정

Docker CLI는 Unix 소켓을 사용하여 Docker 데몬과 상호 작용합니다. 이 소켓이 없거나 손상되었거나 권한이 잘못된 경우 Docker는 연결할 수 없습니다. 다음 명령을 사용하여 소켓이 존재하는지 확인할 수 있습니다:

ls /var/run/docker.sock
 Docker 데몬에 연결할 수 없습니다  오류를 신속하게 해결하세요.

파일이 누락된 경우 일반적으로 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 배포를 다시 시작하면 문제가 해결되는 경우가 많습니다.

향후 이 오류를 방지하기 위한 팁

향후 "Docker 데몬에 연결할 수 없음" 오류를 방지하려면 특히 시스템 업데이트 후에 항상 Docker 서비스가 실행되고 있는지 확인하고 sudo를 사용하여 건너뛰도록 Docker 그룹에 사용자를 추가하세요. . 특히 시스템 전환, WSL 배포 또는 Docker Desktop 사용 후 활성 Docker 컨텍스트를 정기적으로 확인하고 특정 원격 데몬에 연결하지 않는 한 DOCKER_HOST를 설정하지 마십시오. 잘못 구성된 변수는 CLI 명령을 잘못 전달할 수 있습니다. 또한 journalctl -u docker.service를 사용하여 데몬 로그를 모니터링하세요. 문제를 조기에 파악합니다.