Docker 명령이 Docker 데몬에 연결할 수 없습니다


246

Docker로 옮기고 싶었으므로 방금 엉망이되었습니다. VirtualBox Ubuntu 15.10 (Wily Werewolf) 설치에 Docker를 설치했으며 여기 에서 제안한 것처럼 기본 nginx Docker 이미지를 실행하려고 시도했습니다 .

$ docker run --name mynginx1 -P -d nginx
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

그래서 Docker가 실행 중인지 확인했습니다.

$ sudo service docker status
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since vr 2015-11-06 08:41:48 CET; 15min ago
     Docs: https://docs.docker.com
 Main PID: 7542 (docker)
   CGroup: /system.slice/docker.service
           └─7542 /usr/bin/docker daemon -H fd://

nov 06 08:41:47 kramer65-VirtualBox systemd[1]: Starting Docker Application Container Engine...
nov 06 08:41:47 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:47.900410966+01:00" level=info msg="API ...ock"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.033514149+01:00" level=info msg="Fire...lse"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.141594321+01:00" level=info msg="Defa...ess"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.416294436+01:00" level=warning msg="Y...it."
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.565507576+01:00" level=info msg="Load...rt."
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.567907022+01:00" level=info msg="Load...ne."
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.567945214+01:00" level=info msg="Daem...ion"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.567969891+01:00" level=info msg="Dock....9.0
nov 06 08:41:48 kramer65-VirtualBox systemd[1]: Started Docker Application Container Engine.
Hint: Some lines were ellipsized, use -l to show in full.

이것은 Docker 데몬이 실제로 이미 실행 중이지만 Docker 데몬을 수동으로 시작했는지 확인합니다.

$ sudo docker daemon
INFO[0000] API listen on /var/run/docker.sock           
INFO[0000] [graphdriver] using prior storage driver "aufs" 
INFO[0000] Firewalld running: false                     
INFO[0000] Default bridge (docker0) is assigned with an IP address XXX.XX.X.X/XX. Daemon option --bip can be used to set a preferred IP address 
WARN[0000] Your kernel does not support swap memory limit. 
INFO[0000] Loading containers: start.                   

INFO[0000] Loading containers: done.                    
INFO[0000] Daemon has completed initialization          
INFO[0000] Docker daemon                                 commit=76d6bc9 execdriver=native-0.2 graphdriver=aufs version=1.9.0

그런 다음 이미지를 다시 실행했지만 동일한 결과를 얻었습니다.

$ docker run --name mynginx1 -P -d nginx
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

나는 명령을 sudo'ing했지만 아무 소용이 없었다. 내가 여기서 뭘 잘못하고 있니?


1
같은 문제. 나도 우분투 15.10에 있습니다 :(
Daniel Loureiro

1
같은 문제, 우분투 15.10
루카스 Tettamanti

1
모든 Docker 서비스를 다시 시작하십시오. 감사합니다 @jim <사전> sudo는 서비스 고정 표시기를 다시 시작 </ 사전>
Nasruddin

1
확실히 나를 위해 일을하지 않았다 Nasruddin, ... :-(
Rafael_Espericueta

1
제대로 작동하려면 컴퓨터를 다시 시작해야했습니다.
romaroma

답변:


443

다음과 같이 현재 사용자를 docker 그룹에 추가해야합니다.

sudo usermod -aG docker $(whoami)

그런 다음 시스템에 로그 아웃하고 다시 로그인 하거나 시스템을 다시 시작하십시오. 에 의해 테스트docker version

docker-engine을 설치하는 방법에 대한 자세한 내용은 docker documentation을 따르십시오.


바보하지만 그것은 너무 @RobinLoxley 나를 위해 일한, 이것은 단지 의견이 아니라 실제 답변이어야합니다, 당신이 그것을 게시하면 알려주세요, 난 당신에게
공감대를

9
"로그 아웃 및 시스템에 다시 로그인하거나 시스템을 다시 시작합니다"
Michele

3
아래 @Junaid 답변은 나와 같은 로그 아웃 / 로그인 단계를 피하는 방법을 보여줍니다.
게으 르면

이것은 Docker 튜토리얼에서 언급 한 것과 정확히 같지만 로그 아웃했다가 다시 로그인해도 효과가 없었습니다. 시스템을 다시 시작해야 작동했습니다.
aalaap

4
도커 버전 정보가 표시되지만 출력이 끝나면Cannot connect to the Docker daemon. Is the docker daemon running on this host?
ghanbari

137

docker 그룹에 사용자 추가

  • 도커 그룹이 없으면 추가하십시오.

    sudo groupadd docker

  • 연결된 사용자 "$ {USER}"를 도커 그룹에 추가하십시오.

    sudo gpasswd -a ${USER} docker

  • Docker 데몬을 다시 시작하십시오.

    sudo service docker restart

  • newgrp docker그룹 변경 사항을 활성화하려면 a 또는 로그 아웃 / 로그인을 수행하십시오 .


1
newgrp docker로그인 세션이 아닌 쉘에 로컬 인 것 같습니다 . 이 매뉴얼 페이지에서 전혀 명확하지 않습니다.
bergey

1
나를 위해 일했다. 감사!
Apokai

효과가있는 유일한 대답! 사설 클라우드 Linux 시스템에서 여전히 작동했습니다!
Meghna Natraj

우분투 18.04에서 일했습니다! 고마워
Kshitij Saraogi 2018 년

33

일반적으로 다음 명령은 트릭을 수행합니다.

sudo service docker restart

docker startDocker가 이미 실행중인 것처럼 보이는 대신에 .

제안 된 다른 답변 과이 GitHub 문제 에서 작동하면 docker 그룹에 자신을 추가하지 않은 경우 다음을 실행하여 수행하십시오.

sudo usermod -aG docker <your-username> 

그리고 당신은 가장 잘 갈 것입니다.


다른 사람이 이것에 부딪 치면 일부 OS의도 커가 설치 직후 시작되지 않아 결과적으로 동일하게 can't connect to daemon message나타납니다. 이 경우 먼저 다음을 실행하여 docker 서비스의 상태를 확인하여 Docker가 실제로 실행되고 있지 않은지 확인할 수 있습니다.

sudo service docker status

출력이 같이 보입니다 경우 docker stop/waiting대신 docker start/running, process 15378그것은 분명히 부두 노동자가 활성화되지 않은 것을 의미한다. 이 경우 다음으로 시작하십시오.

sudo service docker start

그리고 이전과 마찬가지로, 당신은 가장 잘 갈 것입니다.


18

자기 자신에 대한 참고 사항 : docker명령 을 실행하는 것을 잊었을 때 질문 제목에서 오류가 발생합니다 sudo.

sudo docker run ...

[우분투 15.10]


12

같은 문제가 있었고 나를 위해 일한 것은 :
/var/run/docker.sock의 소유권 확인

ls -l /var/run/docker.sock

소유자가 아닌 경우 다음 명령으로 소유권을 변경하십시오.

sudo chown *your-username* /var/run/docker.sock

그런 다음 Docker 명령을 번거롭지 않게 실행할 수 있습니다.


2
다른 모든 가능성을 다 사용한 후에 이것이 Sabayon / Gentoo Linux에서 작동하게되었습니다.
gerrit_hoekstra

그 파일은 소유하고 root있지만에서 docker그룹. dockerDocker의 문서에 따르면 올바른 접근 방식은 현재 사용자를 그룹 에 지정하는 것입니다 .sudo groupadd docker && sudo usermod -aG docker $USER
Lucas Bustamante

9

모든 것을 설치하고 서비스를 시작한 후 터미널을 닫았다가 다시 연 다음 이미지를 가져옵니다.

편집하다

위의 솔루션 작동하지 않으면 이 문제가 다시 발생 했습니다. 이 솔루션 을 사용해보십시오.

sudo mv /var/lib/docker/network/files/ /tmp/dn-bak

고려 사항

위의 명령이 작동하면 네트워크 도커 문제가 발생했을 가능성이 있습니다.

tail -5f /var/log/upstart/docker.log

출력에 이와 비슷한 것이 있다면

FATA[0000] Error starting daemon: Error initializing network controller: could not delete the default bridge network: network bridge has active endpoints 
/var/run/docker.sock is up

당신은 정말로 네트워크 문제가 있지만, 다음에 다시 시작할 때 ( update , 2 개월 아무런 문제가 없음) OS 가이 문제를 다시 겪고 버그 또는 설치 문제 인지 여부는 아직 알지 못합니다.

내 도커 버전

Client:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   a34a1d5
 Built:        Fri Nov 20 13:12:04 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   a34a1d5
 Built:        Fri Nov 20 13:12:04 UTC 2015
 OS/Arch:      linux/amd64

8

Ubuntu에 docker를 설치 한 후 다음 명령을 실행했습니다.

sudo service docker start

사용해 보셨습니까?


6

나는 같은 문제가 있었다. 그것을 해결하기 위해 이틀 동안 어려움을 겪었습니다.

내가 할 때만 작동했습니다.

  1. Docker 's Tutorial 에 따르면 다음을 사용하여 Docker 키를 아직 추가하지 않은 경우 추가해야합니다.

    $ sudo wget -qO- https://get.docker.com/gpg | sudo apt-key add -

  2. 그런 다음 다음을 사용하여 도커 권한을 자신에게 부여하십시오.

    $ sudo usermod -aG docker $USER

이것이 당신에게도 도움이되기를 바랍니다.


2
2 단계는 다음과 같이 단순화 될 수 있습니다.sudo usermod -aG docker $USER
johntellsall

5

루트 ( sudo su) 로 입력하고 이것을 시도하십시오 :

unset DOCKER_HOST
docker run --name mynginx1 -P -d nginx

나는 여기에서 같은 문제를 겪었고, docker 명령은 루트로만 작동 하고이 DOCKER_HOST빈 상태 에서도 작동했습니다.

추신 : 우분투 에 설치 하는 올 바르고 공식적인 방법 은 " wget "이 아닌 적절한 저장소 (15.10)를 사용 하는 것입니다.


"wget"은 도커 저장소를 적절한 소스에 넣는 것입니다. 즉, "올 바르고 공식적인 방식으로"수동으로 요청한 것과 같은 것입니다.
Alar

1
당신이 틀릴 까봐 걱정됩니다, Alar. "wget"메소드는 apt 소스에 docker 저장소를 추가하지만, 이는 docker가 기본적으로 실행되지 못하게하는 DOCKER_HOST env var 설정과 같은 다른 많은 나쁜 일도 수행합니다. 두 방법이 모두 동일한 리포지토리에 도커를 추가하기 때문이 아닙니다.
Daniel Loureiro

5

대한 OSX :

Docker를 열고 빠른 시작 터미널 ( https://docs.docker.com/engine/installation/mac/ )을 통해 '기본'시스템을 시작한 후 docker 명령을 시도하고이 "docker 데몬에 연결할 수 없습니다"메시지가 나타납니다. , 환경 변수 세트가 필요하다는 것이 밝혀졌습니다 .

eval "$(docker-machine env default)"

그런 다음 docker run hello-world모든 것이 복숭아인지 확인하십시오.


5

이미 컴퓨터를 다시 시작하려고 시도한 사람들은 docker env documentation에 설명 된 환경 변수 DOCKER_HOST를 설정 해제 하고 나머지는 모두

sudo service docker restart

이것은 기계를 다시 시작한 후에도 나를 위해 속임수를 사용했습니다.


2
로그 아웃 및 로그인 만 필요한 경우에 필요합니다.
Zhang LongQI

4

도커 에서 비 루트 액세스 제공

도커 그룹이 없으면 추가하십시오.

$ sudo groupadd docker

연결된 사용자 "$ {USER}"를 도커 그룹에 추가하십시오.

원하는 사용자와 일치하도록 사용자 이름을 변경하십시오.

이를 적용하려면 로그 아웃했다가 다시 로그인해야 할 수도 있습니다.

$ sudo gpasswd -a ${USER} docker

Docker 데몬을 다시 시작하십시오.

$ sudo service docker restart

3

이 질문은 현재 Google 검색에서 3 위입니다. 내 리눅스 시스템 에서이 문제를 해결하기 위해 약간의 연구를 한 후에 나는이 대답을 쓸 것이라고 생각했습니다. 원래 게시물에 문제가 Ubuntu에 있지만 Fedora를 사용하여 문제가 발생했다고 나와 있습니다. 그것을 염두에두고, 문제를 해결하기 위해 내가 한 일이 있습니다.

페도라 22에서

Docker 설치 :

$> curl -fsSL https://get.docker.com/ | sh

Docker를 설치 한 후 :

docker 그룹에 사용자를 추가해야합니다.

$> sudo usermod -aG docker

도커 데몬을 시작해야합니다

$> sudo service docker start

부팅 할 때 데몬을 시작하도록 설정할 수 있습니다

$> sudo chkconfig docker on

docker 서비스가 실행 중인지 확인할 수 있습니다

$> service docker status

그리고 마지막 마지막 확인

$> docker run hello-world

Fedora 23에서이 그룹은이라고 할 수 있습니다 dockerroot. 또한 저장소 대신 (대신 curl ... | sh) 저장소에서 설치하여 나중에 업데이트 할 수 있습니다.dnf install docker
basic6

많은 사람들이 "docker"라는 그룹을 가지고 있지 않으므로 먼저 groupadd docker추가 한 다음 사용자 이름에 추가해야합니다sudo usermod -aG docker your_username
TonyTony

2

실행중인 명령과 함께 "sudo"를 사용하십시오.


"나는 명령을 sudo'ing하려고했지만 아무 소용이 없습니다. 아무도 내가 여기서 뭘 잘못하고 있는지 알고 있습니까? 모든 팁을 환영합니다!"
RhinoDevel

2

도커를 실행하는 동안 동일한 문제가 있습니다.

sudo 사용자 로 명령을 실행할 수 있습니다 .

sudo docker ***your command here***

2

우분투의 경우 :
도커를 업데이트했을 때 나와 함께했습니다.
서비스와 소켓을 마스크 해제 한 다음 서비스를 다시 시작해야합니다.

다음은 나를 위해 일했습니다.

systemctl unmask docker.service
systemctl unmask docker.socket
systemctl start docker.service

시스템 뒤에서 일어난 일은
또한 장치를 / dev / null에 연결하여 장치를 자동 또는 수동으로 완전히 시작할 수없는 것으로 표시 할 수 있습니다. 이를 장치 마스킹이라고하며 마스크 명령으로 가능합니다.

sudo systemctl mask docker.service

다음을 사용하여 마스크 된 서비스 목록을 확인할 수 있습니다.

sudo systemctl list-unit-files

sudo systemctl list-unit-files의 출력

자동 / 수동 서비스 시작을 활성화하려면 다음을 사용하여 마스크를 해제해야합니다.

sudo sytemctl unmask docker.service

이제 서비스가 아래와 같이 활성화됩니다 여기에 이미지 설명을 입력하십시오


1

도 커가 시작하는 동안 루트가 소유 한 유닉스 소켓에 바인딩 할 때 도커 명령과 함께 'sudo'를 사용하면 작동합니다.


1
  1. 나도 같은 문제가 있었다. docker-daemon 및 docker-client에 할당 된 소켓에 문제가 있습니다.
  2. 먼저 docker.sock에서 docker-client에 대한 권한이 설정되지 않았습니다. "sudo usermod -aG docker $ USER"를 사용하여 권한을 설정할 수 있습니다.
  3. 그런 다음 docker-client가 실행중인 bash 파일을 확인하십시오. 나에게 그것은 docker-daemon이 유닉스 소켓에서 실행되는 동안 0.0.0.0:2375에있었습니다 (dockerd의 구성 파일에 설정되었습니다).
  4. bash 라인을 주석 처리하면 정상적으로 작동합니다.
  5. 그러나 유닉스 소켓 대신 TCP 포트에서 작동하게하려면 dockerd의 구성 파일을 변경하고 0.0.0.0.2375로 설정하고 bash에있는 그대로 줄을 유지하거나 0.0.0.0으로 설정하십시오. 2375.

1

아마도 오류 메시지가 매우 도움이되지 않아 누군가에게 도움이 될 것입니다. 나는 모든 표준 권한 단계를 여러 번 겪어 보지 못했습니다.

Docker는 시스템이 올바르게 설정되어 있음에도 불구하고 액세스를 차단하는 고스트 환경 변수를 남겨 둡니다. 다음 셸 명령을 사용하면 한 지점에서 실행 한 후 다시 부팅 한 후 협력을 중지 한 경우 다시 액세스 할 수 있습니다.

unset DOCKER_HOST
unset DOCKER_TLS_VERIFY
unset DOCKER_TLS_PATH
docker ps

이전에 도커를 설치했는데 랩톱을 재부팅 한 후 작동을 거부했습니다. 제대로 고정 표시기 사용자 그룹에 추가되었습니다 등 소켓에 올바른 사용 권한을 가지고,하지만 여전히 실행할 수 없습니다 docker login, docker run ...등이 나를 위해 그것을 해결했습니다. 불행히도 매번 재부팅 할 때마다 이것을 실행해야합니다. 이것은 Docker의 올바른 작동에 대한 지속적인 장벽이라는 버그 인 것처럼 보이지만 몇 가지 github 문제에 대한 해결 방법으로 도 언급됩니다 (참고 : OSX가 아닌 Arch Linux에 있지만 이것은 동일한 문제입니다) 나를).


1

우분투에서 테스트 16.04

# Create the docker group and add your user to the docker group
groupadd docker
usermod -aG docker $USER
newgrp docker

# Configure docker service to be exposed
mkdir -p /etc/systemd/system/docker.service.d
echo -e '[Service]\nExecStart=\nExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2376' >> /etc/systemd/system/docker.service.d/override.conf

# restart service
systemctl daemon-reload
service docker restart

0

Amazon EC2 인스턴스에서 동일한 오류가 발생했습니다. 인스턴스를 다시 시작한 후 문제가 해결되었습니다.


0

도커 그룹에 현재 사용자를 추가하십시오.

sudo usermod -aG docker $(whoami)


이것을 코드로 포맷하십시오! 그리고이 명령을 설명하십시오. 그리고 긴 --버전의 옵션을 사용하십시오.
buhtz

0

들어 우분투 16.04

내부 파일 /lib/systemd/system/docker.service변경 :

ExecStart=/usr/bin/dockerd fd://

와:

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375

내부 파일 /etc/init.d/docker변경 :

DOCKER_OPTS=

와:

DOCKER_OPTS="-H tcp://0.0.0.0:2375"

컴퓨터를 다시 시작하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.