docker-compose에서 docker에 연결할 수 없습니다.


180

Mac OS 10.8.5에 docker-machine 0.1.0을 설치하고 docker-compose 1.1.0을 설치했습니다.
Docker-machine이 정상적으로 실행 중이며 docker-machine ssh로 연결할 수 있습니다.

$ docker-machine ls
NAME   ACTIVE   DRIVER       STATE     URL                         SWARM
dev    *        virtualbox   Running   tcp://192.168.99.100:2376   

그러나 docker-compose에서 연결할 수 없습니다.

$ docker-compose up

http + unix : //var/run/docker.sock에서 Docker 데몬에 연결할 수 없습니다. 실행 중입니까?

비표준 위치에있는 경우 DOCKER_HOST 환경 변수를 사용하여 URL을 지정합니다.

내 Dockerfile 및 docker-compose.yml이 여기 있습니다.

Dockerfile

FROM centos:centos7
DOCKER_HOST tcp://192.168.99.100:2376

docker-compose.yml

web:
  build: .

왜 연결할 수 없습니까? 어떤 아이디어?


57
docker-machine루트로 실행 합니까 ? 나는 우분투에서 동일한 문제로 여기에 왔고 소켓에 대한 권한이었습니다 sudo.
SLD

9
Linux의 경우 docker 그룹에 추가해야 할 수도 있습니다 .
Batandwa

7
그냥 실행 : sudo docker-compose up
Girish Gupta

나는 같은 문제가 있었다. Docker를 다시 시작해야합니다. sudo service docker restart아니면 sudo service docker start이것으로 해결했습니다.
OM Bharatiya

Ubuntu를 사용하는 경우 sudo를 사용해야하며 docker 그룹에 사용자를 추가 하면 안됩니다 . 수락 된 답변에서 댓글보기 : askubuntu.com/questions/477551/…
kas

답변:


95

Docker 머신이 실행 중입니다. 그러나 Docker 머신에 연결하려면 일부 환경을 내 보내야합니다. 기본적으로 dockerCLI 클라이언트는 http+unix://var/run/docker.sock오류 메시지에 표시된대로를 사용하여 데몬과 통신하려고합니다 .

를 사용하여 올바른 환경 변수를 내 보낸 eval $(docker-machine env dev)다음 다시 시도하십시오. docker-machine env dev내보낼 환경 변수를보기 위해 실행할 수도 있습니다 . DOCKER_HOST오류 메시지에서 설정해야 할 수도 있음을 나타내는 것처럼 그중 하나는 입니다.


2
해당 명령 ( eval "$(docker-machine env default)")을 bin / postactivate에 넣어 항상 최신 상태로 유지할 수 있습니다.
Dannid

1
bin / postactivate 파일은 어디에서 찾을 수 있습니까?
lszrh

또는 도커를 설치하는 것을 잊었습니다. $ eval $(docker-machine env dev) Command 'docker-machine' not found, but can be installed with: sudo snap install docker
R OMS

239

나를위한 간단한 솔루션 : sudo docker-compose up


업데이트 2016-3-14 : docker 설치 프로세스 (또는 docker-compose?)의 어느 시점에서 "docker"그룹에 사용자 이름을 추가하라는 제안과 예제가 있습니다. 이렇게하면 다음과 같이 모든 도커 명령 앞에 "sudo"가 필요하지 않습니다.

~ > docker run -it ubuntu /bin/bash
root@665d1ea76b8d:/# date
Mon Mar 14 23:43:36 UTC 2016
root@665d1ea76b8d:/# exit
exit
~ > 

설치 명령 (도커 및 도커 작성을위한 두 번째 설치)의 출력을주의 깊게 살펴보면 필요한 단계를 찾을 수 있습니다. https://subosito.com/posts/docker-tips/ 에도 문서화되어 있습니다.

Sudo? 아니!

명령을 실행할 때마다 sudo docker를 입력하는 데 지치셨습니까? 예, 그것을 처리하는 방법이 있습니다. 당연히 도커에는 루트 사용자가 필요하지만 도커 작업에 대해 루트와 동등한 그룹을 제공 할 수 있습니다.

docker라는 그룹을 만든 다음 해당 그룹에 원하는 사용자를 추가 할 수 있습니다. docker 서비스를 다시 시작한 후 사용자는 docker 작업을 수행 할 때마다 sudo를 입력 할 필요가 없습니다. 쉘 명령에서 어떻게 생겼습니까? 루트로서 여기에 있습니다.

> sudo groupadd docker
> sudo gpasswd -a username docker
> sudo service docker restart 

끝난!

업데이트 2017-3-9

Docker 설치 지침이 여기에서 업데이트되었습니다.

Linux 용 설치 후 단계

이 섹션에는 Docker와 더 잘 작동하도록 Linux 호스트를 구성하는 선택적 절차가 포함되어 있습니다.

루트가 아닌 사용자로 Docker 관리

docker 데몬은 TCP 포트 대신 Unix 소켓에 바인딩됩니다. 기본적으로 Unix 소켓은 사용자 루트가 소유하고 다른 사용자는 sudo를 사용해서 만 액세스 할 수 있습니다. docker 데몬은 항상 루트 사용자로 실행됩니다.

docker 명령을 사용할 때 sudo를 사용하지 않으려면 docker라는 Unix 그룹을 만들고 여기에 사용자를 추가합니다. 도커 데몬이 시작되면 도커 그룹이 Unix 소켓의 소유권을 읽고 쓸 수있게됩니다.

Docker 그룹을 생성하고 사용자를 추가하려면 :

# 1. Create the docker group.
$ sudo groupadd docker

# 2. Add your user to the docker group.
$ sudo usermod -aG docker $USER

# 3. Log out and log back in so that your group membership is re-evaluated.

# 4. Verify that you can run docker commands without sudo.
$ docker run hello-world

이 명령어는 테스트 이미지를 다운로드하고 컨테이너에서 실행합니다. 컨테이너가 실행되면 정보 메시지를 인쇄하고 종료합니다.


1
마찬가지로 어떤 이유로 sudo를 위해 일을 얻을 수있는 유일한 방법입니다 : O : O : O
제이미 Hutber

12
로그 아웃하는 대신 ... 명령을 사용할 수 있습니다.newgrp docker
Thiago Falcao

:-) subquestion와 아 상세한 답변
nomadSK25

1
Re : "나를위한 간단한 솔루션 : sudo docker-compose up". 시도하면 다음과 같은 결과가 나타납니다.sudo: docker-compose: command not found
mblakesley

46

을 사용하여 docker를 시작한 경우 sudo다음과 sudo 같이 docker-compose up을 실행해야합니다 .sudo docker-compose up


sudo docker-compose build대신 뛰었을 때 나를 위해 일했습니다 docker-compose build.
anms_pro

잘 잡아! 감사!
Fatemeh Karimi

26

기본적으로 docker 데몬은 항상 루트 사용자로 실행되므로 sudoDocker 명령 앞에 추가 해야합니다.

docker 명령을 사용할 때 sudo를 사용하지 않으려면 docker라는 Unix 그룹을 만들고 여기에 사용자를 추가합니다. 도커 데몬이 시작되면 도커 그룹이 Unix 소켓의 소유권을 읽고 쓸 수있게됩니다.

Docker 그룹을 생성하고 사용자를 추가하려면 :

  1. Docker 그룹을 만듭니다.

    $ sudo groupadd docker

  2. 사용자를 docker 그룹에 추가하십시오.

    $ sudo usermod -aG docker $USER

  3. 로그 아웃했다가 다시 로그인하면 그룹 멤버십이 재평가됩니다.

  4. sudo없이 명령을 도킹 할 수 있는지 확인합니다.

    $ docker run hello-world

이 명령어는 테스트 이미지를 다운로드하고 컨테이너에서 실행합니다. 컨테이너가 실행되면 정보 메시지를 인쇄하고 종료합니다.

위에 설명 된 단계는 공식 Docker 문서 에서 가져온 것 입니다.


Docker가 설치된 Windows에서 어떻게 할 수 있습니까?
Jeff Cook

그 외에도 docker-compose를 수정하기 위해 사용자 docker-compose가 소유자로 실행하도록 설정 /usr/local/bin/docker-compose한 다음 서비스를 다시 시작했습니다
Sam

group회원으로 갱신 할 수 있습니다 su - $USER로그 오프 및에 저장
스튜어트 Cardall

22

오류 가 발생하면 :

오류 : http + docker : // localhost에서 Docker 데몬에 연결할 수 없습니다. 실행 중입니까?

솔루션은 다음과 같습니다

  1. 먼저 Docker 서비스가 원격 / 로컬 머신에서 예상대로 작동 및 실행 중인지 확인 하십시오.sudo service docker status

    실행되지 sudo service docker start 않거나 sudo systemctl start docker(일부 Linux 버전에 따라 다름, Docker 시작 지침 참조 ).

  2. 둘째, 도커 를 sudo로 시작하십시오. sudo docker-compose up


16

sudo systemctl start docker -Docker 서비스를 시작합니다.

sudo docker-compose up 그 후.

나는 페도라 (26), 그리고 같은 나는 결국 입력 문제를 해결하기 위해 노력 '페이지 페도라 개발자에 도커 작성을 다음과 페이지 페도라 개발자에 부두 노동자를' 나를 도왔다.

아마도 커뮤니티에서 시스템으로 시작하여 항상 백그라운드에서 실행되는 도커 서비스를 고려했지만 저에게는 그렇게 분명하지 않았기 때문에 이와 같은 인기있는 답변이없는 이유를 생각할 수 있습니다.

페도라 개발자 '페이지 시스템과 함께 시작 도커을 사용하도록 설정하는 방법에 지시가있다 :

sudo systemctl enable docker


교체 systemctllaunchctl당신은 Mac에서 실행하는 경우.
Rohit Swami

6

Linux를 사용하는 경우 docker-machine기본적으로 Windows 및 Mac 컴퓨터에만 설치되므로 설치 하지 않았을 수 있습니다.

그렇다면 https://docs.docker.com/machine/install-machine/ 으로 이동 하여 Linux 버전에 설치하는 방법에 대한 지침을 찾아야합니다.

설치 후 docker-compose up위에 나열된 작업을 시도 하기 전에 다시 실행하십시오 .

이것이 누군가를 돕기를 바랍니다. 이것은 Fedora 25의 devilbox 설치에서 작동했습니다.


5

사용자를 docker 그룹에 추가하는 것 외에도 sudo반복적으로 입력하지 docker않도록 다음과 같은 명령에 대한 별칭을 만들 수도 있습니다 .

alias docker-compose="sudo docker-compose"
alias docker="sudo docker"

4

누구든지 로그를 확인 했습니까?

내 경우 오류 메시지 /var/log/upstart/docker.log는 다음과 같습니다.

Listening for HTTP on unix (/var/run/docker.sock) 
[graphdriver] using prior storage driver "aufs" 
Running modprobe bridge nf_nat failed with message: , error: exit status 1 
Error starting daemon: Error initializing network controller: Error creating default "bridge" network: can't find an address range for interface "docker0" 

언급 할 가치가있는 것은 내가 VPN을 켰으므로 $ sudo service openvpn stop $ sudo service docker restart $ docker-compose up|start $ sudo service openvpn start 해결책이었습니다.


예, 저도 마찬가지 였지만
누군가이

4

docker-machine을 사용하는 경우 env 변수를 사용하여 환경을 활성화해야합니다 . docker-machine을 사용하지 않는 경우 sudo로 명령을 실행하십시오.


4

나는 그것이 어리 석다는 것을 알고 있지만, 제 경우에는 방금 시도 sudo했고 그것은 매력처럼 작동했습니다.

귀하의 경우에는 다음을 시도하십시오. $ sudo docker-compose up


3

@srfrnk의 답변이 저에게 효과적입니다.

제 상황에서는 다음 docker-compose.yml 파일이 있습니다.

  nginx:
    build:
      context: ./
      dockerfile: "./docker/nginx.staging/Dockerfile"
    depends_on:
      - scripts
    environment:
      NGINX_SERVER_NAME: "some.host"
      NGINX_STATIC_CONTENT_OPEN_FILE_CACHE: "off"
      NGINX_ERROR_LOG_LEVEL: debug
      NGINX_BACKEND_HOST: scripts
      NGINX_SERVER_ROOT: /var/www/html
    volumes:
      - ./docker-runtime/drupal/files:/var/www/html/sites/default/files:rw
    ports:
      - 80:80

./docker-runtime소유자 및 그룹- root다른 파일 소유자-내 사용자입니다. 내가 만들려고 할 때nginx

Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?

내가 추가 ./docker-runtime하고 .dockerignore내 문제가 해결되었습니다.


2

저도 같은 증상을 보였습니다.

docker-compose build docker ps일하는 동안에 만 일어났다는 점만 다릅니다. 버전 2.x뿐만 아니라 3.x. docker서비스를 다시 시작한 다음 기계를 다시 설치했습니다 . docker+ docker-compose.

모든 것을 시도했지만 도움이되지 않았습니다.

마지막으로을 사용하여 Dockerfile을 "수동으로"빌드 해 보았습니다 docker build.

분명히 Docker컨텍스트 내의 파일 / 폴더에 대한 권한 문제가있었습니다 . 빌드를 시작할 때 컨텍스트를 읽으려고했으나 적절한 오류 메시지와 함께 실패했습니다. 그러나이 오류 메시지는 하지 않았다 전파 docker-compose하는 유일한 쇼Couldn't connect to Docker daemon at http+unix://var/run/docker.sock - is it running?

솔루션이 .dockerignore빌드에 필요하지 않았기 때문에 단순히 파일 / 폴더를 파일에 추가하는 것임을 발견했습니다 . 또 다른 해결책은 chown또는 chmod그것 일 수 있습니다.

어쨌든 이것은 실제로 관련이없는 동일한 문제 docker와 오해의 소지가있는 오류 메시지가 표시되는 사람을 도울 수 있습니다.


나는 동일한 문제가 있었다 : 마운트 된 볼륨의 파일 권한. 제 경우에는 Docker 볼륨에 넣은 루트 소유의 SSL 인증서가 있습니다. chown/ chmod고쳤습니다. 끔찍한 오류 메시지이지만 작업 중입니다. github.com/docker/compose/issues/5318
bcattle

2

$ sudo docker-compose up

위의 답변에서와 같이 $ USER를 그룹 도커에 추가하는 단계를 따랐습니다. 내 도커 설치에서 도커라는 그룹이 자동으로 생성 되었기 때문에 새 그룹 도커를 추가하고 싶지 않았습니다.

Docker CE가 설치되어 실행 중입니다. docker 그룹이 생성되지만 사용자가 추가되지 않습니다. Docker 명령을 실행하려면 sudo를 사용해야합니다. 권한이없는 사용자가 Docker 명령 및 기타 선택적 구성 단계를 실행할 수 있도록 Linux 사후 설치를 계속합니다.

그러나 docker-compose up을 사용하는 것도 작동하지 않았습니다. 이전과 동일한 오류가 발생했습니다. 그래서 제 경우 (Ubuntu 18.10) sudo docker-compose up이 문제를 해결했습니다.

추신 : @Tiw 조언에 감사드립니다.


1
해결책을 먼저 놓고 그 아래에 설명하는 것이 더 낫습니다. 또한 편집기의 해당 버튼을 사용하여 더 나은 답변 형식을 지정할 수 있습니다.
Tiw

2

실행 중 docker-compose pull-오류가 발생했습니다.

오류 : http + docker : // localhost에서 Docker 데몬에 연결할 수 없습니다.

실행 중입니까?

해결책 -

sudo service docker start 

문제가 해결됨


2

다음 단계를 사용하여 문제를 해결했습니다.

$ sudo service docker status
$ sudo service docker start
$ sudo docker-compose up

이제 docker-compose up이 작동합니다.


2

Ubuntu 20.0.4에서 문제를 해결했습니다.

sudo chmod 666 /var/run/docker.sock

그리고

sudo service docker start && docker-compose up -d

Ref.


잘못된 답변. 더 많은 조사를하십시오. 모든 사람에게 소켓에 대한 액세스 권한을 부여하고 있습니다. askubuntu.com/questions/477551/…
LiveWireBT

@LiveWireBT 그것은 해결책이며 문제를 해결했습니다. 여기에서 모범 사례가 무엇인지 설명 할 수 있습니까?
M. Rostami

1

이 시도:

sudo ln -s / usr / local / bin / docker-compose / usr / bin / docker-compose


1

로그 아웃 한 다음 다시 로그인하면 도움이되었습니다. 제 경우에는 새로 설치하고 새 사용자를 만들고 새 그룹을 만든 다음 사용자를 도커 그룹에 추가했습니다.

출구 출구

그런 다음 다시 서버에 ssh


0

나를 위해 Docker 업그레이드를 시작하고 중간에 취소했습니다. Docker가 실행되고 있지 않다는 것을 알지 못했습니다 (만약 Macbook의 상단 탐색 모음에 배터리 잔량, 시간 등으로 표시된 아이콘이 있습니다). 일단 시작하고 업그레이드를 마치면 docker-compose up다시 작동했습니다!


0

내 설정에는이 오류에 대한 두 가지 경우가 있습니다.

  • __pycache__ 컨테이너 내부에서 통합 테스트를 실행 한 후 루트 사용자가 만든 파일은 docker (원래 문제를 알려줌) 및 docker-compose (도커 호스트에 대해 모호하게 알려줌)에 액세스 할 수 없습니다.
  • microk8s 내가 그것을 멈출 때까지 내 포트를 차단했습니다.


0

다음은 나를 위해 일했지만 어떤 부분이 트릭을했는지 잘 모르겠습니다.

julian:project$ sudo service docker status
julian:varys$ 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 Wed 2020-07-15 01:21:16 UTC; 24min ago
     Docs: https://docs.docker.com
 Main PID: 6762 (dockerd)
    Tasks: 25
   CGroup: /system.slice/docker.service
           └─6762 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

julian:project$ export DOCKER_HOST=unix:///run/containerd/containerd.sock

julian:project$ sudo groupadd docker
groupadd: group 'docker' already exists
julian:project$ sudo gpasswd -a $USER docker
Adding user ubuntu to group docker
julian:project$ newgrp docker

julian:project$ ls -ln /var/run/ | grep docker
drwx------  5   0   0  120 Jul 15 01:10 docker
-rw-r--r--  1   0   0    4 Jul 15 01:10 docker.pid
srw-rw----  1   0 999    0 Jul 15 01:10 docker.sock

julian:project$ sudo rm /var/run/docker.sock                                                                                                                                                                                            
julian:project$ sudo rm /var/run/docker.pid

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