Computer >> 컴퓨터 >  >> 문제 해결 >> Linux

[FIX] 'unix:///var/run/docker.sock'에서 Docker Daemon에 연결할 수 없음

Docker는 컨테이너를 사용하여 애플리케이션을 쉽게 생성, 배포 및 실행할 수 있는 기능으로 점점 더 대중화되고 있습니다. 컨테이너를 사용하면 개발자가 애플리케이션을 하나의 전체 패키지로 배포하기 전에 모든 라이브러리 및 종속성과 함께 애플리케이션을 패키징할 수 있습니다. 설치 Linux의 Docker는 비교적 쉽습니다. 터미널에서 몇 가지 명령만 실행하면 됩니다.

[FIX]  unix:///var/run/docker.sock 에서 Docker Daemon에 연결할 수 없음

그러나 이것은 성공적인 설치 후에도 모든 사용자에게 동일하지 않을 수 있습니다. 가장 흔히 발생하는 오류 중 하나는 다음과 같습니다. Cannot to the Docker daemon at (unix:///var/run/docker.sock. Is the docker daemon running?) 이 오류는 docker run, docker info, docker pull, docker stop 등과 같은 다양한 docker 명령을 실행할 때 발생할 수 있습니다.

오류의 원인:Docker 데몬에 연결할 수 없음

수많은 개발자들의 불만을 접수한 후, 우리는 잠입하여 효과적인 솔루션을 찾기로 결정했습니다. 이 오류를 유발하는 몇 가지 이유는 다음과 같습니다.

  • Docker 데몬이 실행 중이 아닙니다. .
  • Docker는 종료하지 않습니다. 깔끔하게.
  • 루트 권한 부족 도커 서비스를 시작합니다.

이제 문제 원인에 대한 기본적인 이해를 하였으므로 사용할 수 있는 다양한 솔루션을 살펴보겠습니다.

해결 방법 1:systemctl로 Docker 서비스 시작

Ubuntu에서 Docker의 새로 설치를 완료했거나 PC를 재부팅한 경우 Docker 서비스 가능성이 높습니다. 실행되지 않음 . 도커 데몬(dockerd)은 도커용 시스템 서비스입니다. 이 서비스는 이미지, 컨테이너, 네트워크, 볼륨과 같은 다양한 Docker 객체를 처리하고 Docker API 요청을 수신합니다.

Systemctl 명령은 이전 SysV 초기화 시스템을 대체하기 위해 제공되며 systemd 서비스를 관리합니다. Linux 시스템에서 실행. 시스템에 systemctl이 없어도 걱정하지 마세요. 서비스 사용 아래에 설명된 대로 명령을 실행합니다.

참고: 이 방법은 APT 패키지 관리자로 Docker를 설치한 사용자에게만 적용됩니다. SNAP을 통해 Docker를 설치한 경우 , 해결 방법 5  참조 아래.

  1. 터미널 열기 첫 번째 명령 실행 – 도커 해제 .
sudo systemctl unmask docker

도커가 마스킹된 상태에서 도커 서비스를 시작하려고 하면 'docker.service 시작 실패:장치가 마스킹됨' 오류가 발생할 수 있습니다. Mask는 비활성화의 보다 강력한 버전으로 간주될 수 있습니다. 단위 파일이 마스킹되면 단위는 'dev/null'에 연결됩니다. 모든 단위 파일의 상태는 '$ systemctl list-unit-files 명령으로 나열할 수 있습니다. '

2. 도커 유닛이 마스크 해제되면 , 도커를 시작할 수 있습니다. 데몬 systemctl 명령으로. 도커 데몬 이미지, 컨테이너 및 Docker API 요청과 같은 도커 객체를 관리합니다. 명령줄에서 아래 명령을 실행합니다.

systemctl start docker
[FIX]  unix:///var/run/docker.sock 에서 Docker Daemon에 연결할 수 없음

3. 확인 도커 서비스 활성 및 실행 중 여부 . systemctl 상태를 사용합니다. 특정 서비스의 현재 상태를 보여주는 명령. 터미널에서 아래 명령어를 실행하세요.

systemctl status docker
[FIX]  unix:///var/run/docker.sock 에서 Docker Daemon에 연결할 수 없음

위 이미지에서 도커가 활성화되어 실행 중임을 알 수 있습니다. .

솔루션 2:'실패한 Docker pull' 정리 및 Docker 서비스 시작

컨테이너를 가져오는 동안 예기치 않게 Docker를 닫을 수 있는 경우가 있습니다. 이러한 상황은 docker.service를 마스킹합니다. 및 도커 .socket  파일. Docker.socket은 '/var/run/docker.sock'에 위치한 파일로 Docker 데몬과 통신하기 위해 사용됩니다. 마스크 해제해야 합니다. 두 개의 단위 파일 – 진행 전의 docker .service 및 docker.daemon 도커를 시작합니다.

  1. 터미널 실행 명령 실행 아래:
systemctl unmask docker.service
systemctl unmask docker.socket
systemctl start docker.service
[FIX]  unix:///var/run/docker.sock 에서 Docker Daemon에 연결할 수 없음

아래 명령을 실행한 후에도 오류가 계속 발생하면 삭제해야 합니다. 컨테이너 의 파일 Docker를 다시 시작하기 전에 디렉토리. Containerd는 Docker 1.11에 도입된 기능으로 Docker 이미지 수명 주기를 관리하는 데 사용됩니다.

2. 터미널을 열고 아래 명령어를 실행합니다. 루트 비밀번호를 알고 있는지 확인합니다. 명령을 실행하려면 높은 권한이 필요하기 때문입니다.

sudo su
service docker stop
cd /var/run/docker/libcontainerd
rm -rf containerd/*
rm -f docker-containerd.pid
service docker start
[FIX]  unix:///var/run/docker.sock 에서 Docker Daemon에 연결할 수 없음

해결책 3:Dockerd(Docker Daemon) 서비스 시작

Dockerd는 Docker API를 수신하고 다양한 Docker 객체를 관리하는 Docker 데몬입니다. Dockerd는 '$ systemctl start docker 명령의 대안으로 사용할 수 있습니다. ' 또한 Docker 데몬을 시작하는 데 사용됩니다.

  1. 터미널 열기 dockerd 시작 아래 명령을 실행하여:
sudo dockerd
[FIX]  unix:///var/run/docker.sock 에서 Docker Daemon에 연결할 수 없음

해결 방법 4:서비스 명령으로 Docker 시작

SysV 초기화 시스템을 사용하는 경우 , 그러면 systemctl 명령이 작동하지 않습니다. 서비스 명령을 사용해야 합니다. 도커 데몬 시작 .

  1. 터미널을 시작하고 실행 아래 명령:
sudo service --status-all
sudo service docker start
[FIX]  unix:///var/run/docker.sock 에서 Docker Daemon에 연결할 수 없음

해결 방법 5:Snap으로 Docker 서비스 시작

Snap 패키지 관리자로 Docker를 설치한 경우 , docker 데몬을 관리하려면 snap 명령을 사용해야 합니다.

일반적으로 Snap은 서비스를 자동으로 관리합니다. 그러나 이 오류와 같은 상황에서는 수동 개입이 필요합니다. snap 명령과 함께 사용할 수 있는 일부 인수에는 중지, 시작 및 다시 시작이 포함됩니다. 우리의 경우 시작 매개변수를 사용합니다.

  1. 터미널을 열고 아래 명령어를 실행하여 Docker 시작 .
sudo snap start docker
[FIX]  unix:///var/run/docker.sock 에서 Docker Daemon에 연결할 수 없음

2. 아래 명령어를 실행하여 확인합니다. Docker 서비스 시작 여부

sudo snap services

나열 실행 중인 모든 스냅 서비스 .

[FIX]  unix:///var/run/docker.sock 에서 Docker Daemon에 연결할 수 없음

위의 명령이 작동하지 않으면 docker:home 플러그 연결을 시도하세요. 기본적으로 자동 연결되지 않기 때문입니다. 완료되면 시작 도커 서비스 .

3. 터미널을 실행하고 아래 명령을 실행하십시오:

sudo snap connect docker:home :home
sudo snap start docker
[FIX]  unix:///var/run/docker.sock 에서 Docker Daemon에 연결할 수 없음

해결 방법 6:루트 P권한이 없는 사용자를 위해 Docker 시작

상승된 권한 부족으로 인해 오류가 발생할 수도 있습니다. 사용자는 'unix:///var/run/docker.sock'에 액세스할 수 없습니다. 다행히도 해결 방법이 있습니다. Docker 호스트 변수를 포트 2375를 통해 localhost로 내보냅니다.

  1. 터미널을 열고 아래 명령을 실행합니다.
export DOCKER_HOST=tcp://localhost:2375
[FIX]  unix:///var/run/docker.sock 에서 Docker Daemon에 연결할 수 없음

해결 방법 7:Docker 재설치

위의 해결 방법으로 오류가 해결되지 않으면 설치 오류가 발생할 가능성이 높습니다. Linux 시스템에 Docker를 올바르게 설치하려면 Docker 공식 웹사이트의 단계를 따르세요.