[docker] docker-compose에서 docker에 연결할 수 없습니다.
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: .
왜 연결할 수 없습니까? 어떤 아이디어?
답변
Docker 머신이 실행 중입니다. 그러나 Docker 머신에 연결하려면 일부 환경을 내 보내야합니다. 기본적으로 docker
CLI 클라이언트는 http+unix://var/run/docker.sock
오류 메시지에 표시된대로를 사용하여 데몬과 통신하려고합니다 .
를 사용하여 올바른 환경 변수를 내 보낸 eval $(docker-machine env dev)
다음 다시 시도하십시오. docker-machine env dev
내보낼 환경 변수를보기 위해 실행할 수도 있습니다 . DOCKER_HOST
오류 메시지에서 설정해야 할 수도 있음을 나타내는 것처럼 그중 하나는 입니다.
답변
나를위한 간단한 솔루션 : 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
이 명령어는 테스트 이미지를 다운로드하고 컨테이너에서 실행합니다. 컨테이너가 실행되면 정보 메시지를 인쇄하고 종료합니다.
답변
을 사용하여 docker를 시작한 경우 sudo
다음과 sudo
같이 docker-compose up을 실행해야합니다 .sudo docker-compose up
답변
기본적으로 docker 데몬은 항상 루트 사용자로 실행되므로 sudo
Docker 명령 앞에 추가 해야합니다.
docker 명령을 사용할 때 sudo를 사용하지 않으려면 docker라는 Unix 그룹을 만들고 여기에 사용자를 추가합니다. 도커 데몬이 시작되면 도커 그룹이 Unix 소켓의 소유권을 읽고 쓸 수있게됩니다.
Docker 그룹을 생성하고 사용자를 추가하려면 :
-
Docker 그룹을 만듭니다.
$ sudo groupadd docker
-
사용자를 docker 그룹에 추가하십시오.
$ sudo usermod -aG docker $USER
-
로그 아웃했다가 다시 로그인하면 그룹 멤버십이 재평가됩니다.
-
sudo없이 명령을 도킹 할 수 있는지 확인합니다.
$ docker run hello-world
이 명령어는 테스트 이미지를 다운로드하고 컨테이너에서 실행합니다. 컨테이너가 실행되면 정보 메시지를 인쇄하고 종료합니다.
위에 설명 된 단계는 공식 Docker 문서 에서 가져온 것 입니다.
답변
오류 가 발생하면 :
오류 : http + docker : // localhost에서 Docker 데몬에 연결할 수 없습니다. 실행 중입니까?
솔루션은 다음과 같습니다
-
먼저 Docker 서비스가 원격 / 로컬 머신에서 예상대로 작동 및 실행 중인지 확인 하십시오.
sudo service docker status
실행되지
sudo service docker start
않거나sudo systemctl start docker
(일부 Linux 버전에 따라 다름, Docker 시작 지침 참조 ). -
둘째, 도커 를 sudo로 시작하십시오.
sudo docker-compose up
답변
sudo systemctl start docker
-Docker 서비스를 시작합니다.
sudo docker-compose up
그 후.
나는 페도라 (26), 그리고 같은 나는 결국 입력 문제를 해결하기 위해 노력 ‘페이지 페도라 개발자에 도커 작성을 다음과 페이지 페도라 개발자에 부두 노동자를’ 나를 도왔다.
아마도 커뮤니티에서 시스템으로 시작하여 항상 백그라운드에서 실행되는 도커 서비스를 고려했지만 저에게는 그렇게 분명하지 않았기 때문에 이와 같은 인기있는 답변이없는 이유를 생각할 수 있습니다.
온 페도라 개발자 ‘페이지 시스템과 함께 시작 도커을 사용하도록 설정하는 방법에 지시가있다 :
sudo systemctl enable docker
답변
Linux를 사용하는 경우 docker-machine
기본적으로 Windows 및 Mac 컴퓨터에만 설치되므로 설치 하지 않았을 수 있습니다.
그렇다면 https://docs.docker.com/machine/install-machine/ 으로 이동 하여 Linux 버전에 설치하는 방법에 대한 지침을 찾아야합니다.
설치 후 docker-compose up
위에 나열된 작업을 시도 하기 전에 다시 실행하십시오 .
이것이 누군가를 돕기를 바랍니다. 이것은 Fedora 25의 devilbox 설치에서 작동했습니다.