programing

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

codeshow 2023. 7. 31. 22:02
반응형

Docker 명령을 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 usermod -aG docker $(whoami)

로그아웃한 후 시스템에 다시 로그인하거나 시스템을 다시 시작합니다.에 의한 시험.docker version

도커를 설치하는 방법에 대한 자세한 내용은 도커 설명서를 따릅니다.

도커 그룹에 사용자 추가

  • 도커 그룹이 아직 없는 경우 추가:

    sudo groupadd docker

  • 연결된 사용자 "${USER}"을(를) 도커 그룹에 추가합니다.

    sudo gpasswd -a ${USER} docker

  • Docker 데몬을 다시 시작합니다.

    sudo service docker restart

  • 둘 중 하나를 하라.newgrp docker또는 로그아웃/로그인하여 그룹에 대한 변경사항을 활성화합니다.

일반적으로 다음 명령을 실행합니다.

sudo service docker restart

이은 에 에신대입니다.docker start도커가 이미 실행 중인 것처럼 보이는 경우.

제안한 대로 다른 답변과 이 GitHub 문제에서 이 방법이 효과가 있으면 도커 그룹에 자신을 추가하지 않은 경우 다음을 실행합니다.

sudo usermod -aG docker <your-username> 

그리고 당신은 아마 갈 수 있을 겁니다.


문제에 다른 후되지 않으며,한 이문의부는딪다사경의우 ▁as▁right▁the다'▁os▁doesner▁some니▁dock▁in▁same,▁else의동합,▁it,일▁this'▁a결로▁install▁result▁intoing▁you▁after으▁bump적과이s▁for▁and▁startt▁as며않▁anybody으.can't connect to daemon message 다음할 수 있습니다.

sudo service docker status

이 다음과 같은 :docker stop/waitingdocker start/running, process 15378도커가 활동하지 않는다는 것을 의미합니다이 경우 다음과 같이 시작해야 합니다.

sudo service docker start

그리고, 예전처럼, 당신은 아마 갈 수 있을 것입니다.

例고:하는 것을 잊어버렸을문제합니다.docker으로 합니다.sudo:

sudo docker run ...

[Ubuntu 15.10]

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

sudo service docker start

먹어 봤어요?

동일한 문제가 있었고 저에게 효과가 있었던 것은 다음과 같습니다.
/바/달리기/양말sock 소유권 확인

ls -l /var/run/docker.sock

소유자가 아닌 경우 명령을 사용하여 소유권을 변경합니다.

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

그런 다음 도커 명령을 번거롭지 않게 실행해 볼 수 있습니다. :

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

편집

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

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

당신은 정말 네트워크 문제가 있지만, 다음에 다시 시작할 때(업데이트, 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

저도 같은 문제가 있었습니다.그것을 해결하기 위해 이틀 동안 고군분투했습니다.

제가 할 때만 효과가 있었습니다.

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

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

  2. 그런 다음 다음을 사용하여 자신에게 도커 권한을 부여해야 합니다.

    $ sudo usermod -aG docker $USER

이것도 도움이 되길 바랍니다.

합니다.sudo su다음을 수행합니다.

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

저도 같은 문제가 있는데, 도커 명령어는 루트로만 실행할 수 있었고, 이것도 마찬가지였습니다.DOCKER_HOST

PS: 또한 Ubuntu에 설치하는 정확하고 공식적인 방법은 "wget"과 같은 것이 아니라 적절한 저장소(15.10에서도)를 사용하는 것입니다.

OSX의 경우:

도커를 열고 Quickstart Terminal(https://docs.docker.com/engine/installation/mac/), 을 통해 '기본' 시스템을 시작한 후 도커 명령을 시도하면 "도커 데몬에 연결할 수 없습니다"라는 메시지가 표시되면 다음과 같은 환경 변수를 설정해야 합니다.

eval "$(docker-machine env default)"

그럼 한 번 해보세요.docker run hello-world모든 것이 평안한지 확인하기 위해.

이미 시스템을 다시 시작하려고 시도한 사용자의 경우 도커 환경 설명서에 나와 있는 대로 환경 변수 DOKER_HOST의 설정을 해제하고 나머지는 다음과 같이 하십시오.

sudo service docker restart

기계를 다시 시작한 후에도 이것만이 저에게 효과가 있었습니다.

루트가 아닌 액세스 허용 - 도커에서

도커 그룹이 아직 없는 경우 추가합니다.

$ sudo groupadd docker

연결된 사용자 "${USER}"을(를) 도커 그룹에 추가합니다.

기본 사용자와 일치하도록 사용자 이름을 변경합니다.

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

$ sudo gpasswd -a ${USER} docker

도커 데몬을 다시 시작합니다.

$ sudo service docker restart

이 질문은 현재 구글 검색에서 3위입니다.리눅스 시스템에서 이 문제를 해결하기 위해 조사를 한 후에 저는 이 답을 쓸 것이라고 생각했습니다.원래 게시물에는 Ubuntu에 문제가 있다고 되어 있지만, 저도 Fedora를 사용하여 문제를 경험했습니다.그런 점을 염두에 두고, 문제를 해결하기 위해 제가 한 일은 다음과 같습니다.

페도라 22일

도커 설치 중:

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

도커 설치 후:

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

$> sudo usermod -aG docker

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

$> sudo service docker start

부팅 시 데몬이 시작되도록 설정할 수 있습니다.

$> sudo chkconfig docker on

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

$> service docker status

그리고 마지막 마지막 확인은

$> docker run hello-world

Ubuntu 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

실행 중인 명령에 "sudo"를 사용해 보십시오.

도커를 실행하는 동안에도 동일한 문제가 발생합니다.

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

sudo docker ***your command here***

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

다음은 저에게 도움이 되었습니다.

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

에서 무슨 ?
systemd에 으로 완전히수 없음으로 .이를 장치 마스킹이라고 하며, mask 명령을 사용하면 가능합니다.

sudo systemctl mask docker.service

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

sudo systemctl list-unit-files

Output of sudo systemctl list-unit-files

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

sudo sytemctl unmask docker.service

이제 아래와 같이 서비스가 활성화됩니다.

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

  1. 저도 같은 문제가 있었습니다.도커-데몬 및 도커-클라이언트에 할당된 소켓에 문제가 있었습니다.
  2. 첫째, 도커의 도커-클라이언트에 대한 권한이 설정되지 않았습니다.양말 "sudouser mod -aG 도커 $USER"를 사용하여 설정할 수 있습니다.
  3. 그런 다음 도커-클라이언트가 실행 중인 bash 파일을 확인합니다. 저는 도커-대몬이 유닉스 소켓에서 실행되는 동안 0.0.0:2375에 있었습니다.(dockerd의 구성 파일에 설정되었습니다.)
  4. 바쉬라인에 댓글만 달면 잘 될 겁니다.
  5. 그러나 unix 소켓 대신 TCP 포트에서 작동하도록 하려면 dockerd의 구성 파일을 변경하여 0.0.0.2375로 설정하고 bash에 줄이 있으면 그대로 유지하거나 0.0.0:2375로 설정합니다.

오류 메시지가 매우 도움이 되지 않고 표준 권한 단계를 여러 번 거쳤으나 소용이 없었기 때문에 아마도 이것이 누군가에게 도움이 될 것입니다.

도커는 시스템이 올바르게 설정되어 있음에도 불구하고 액세스를 차단하는 고스트 환경 변수를 그대로 두는 경우가 있습니다.한 시점에서 실행되어 재부팅 후 작동이 중지된 경우 다음 셸 명령을 사용하여 다시 액세스할 수 있습니다.

unset DOCKER_HOST
unset DOCKER_TLS_VERIFY
unset DOCKER_TLS_PATH
docker ps

이전에 작동하던 도커를 설치했는데 노트북을 재부팅한 후 작동을 거부했습니다.도커 사용자 그룹에 올바르게 추가되었으며 소켓에 대한 올바른 권한 등이 있지만 여전히 실행할 수 없습니다.docker login,docker run ...등등. 이것이 저를 위해 고쳐주었습니다.불행히도 재부팅할 때마다 이 작업을 실행해야 합니다.이것은 도커의 올바른 작동에 대한 지속적인 장벽인 버그처럼 보이지만 해결책으로 몇 가지 Github 문제에서도 언급됩니다(참고: 저는 OSX가 아니라 Arch Linux에 있지만 저도 마찬가지였습니다).

다음 명령을 실행하여 이 문제를 해결할 수 있었습니다.

sudo mv /var/lib/dpkg/info/docker-ce* /tmp

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

도커 그룹에 현재 사용자 추가:

sudo usermod -aG docker $(whoami)

Ubuntu 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"

컴퓨터를 다시 시작합니다.

저의 경우, 위의 수정 사항 중 아무 것도 작동하지 않았습니다. 즉, 사용자는docker그룹, 서비스가 실행 중인 등.결국 구성이 중단되었습니다.

rm -rf ~/.docker

그 후 모든 것이 작동했습니다!

언급URL : https://stackoverflow.com/questions/33562109/docker-command-cant-connect-to-docker-daemon

반응형