docker-composeからdockerに接続できません


163

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: .

接続できないのはなぜですか?何か案は?


49
docker-machinerootで実行?私はちょうどUbuntuで同じ問題を抱えてここに来ました、そしてそれはソケットの許可sudoでした- トリックをしました。
SLD 2015年

7
Linuxの場合は、dockerグループに追加する必要があるだけかもしれません。
Batandwa 2016年

5
ただ実行する:sudo docker-compose up
Girish Gupta '10

同じ問題がありました。dockerを再起動する必要があります。sudo service docker restartまたはsudo service docker start私はこれでそれを解決しました。
OMバーラティヤ

Ubuntuを使用している場合は、sudoを使用し、ユーザーをdockerグループに追加しないでください。受け入れ答えのコメントを見る:askubuntu.com/questions/477551/...は
カス

回答:


89

Dockerマシンが実行されています。ただし、Dockerマシンに接続するには、いくつかの環境をエクスポートする必要があります。デフォルトでは、dockerCLIクライアントはhttp+unix://var/run/docker.sock(エラーメッセージに示されているように)を使用してデーモンと通信しようとしています。

を使用して正しい環境変数をエクスポートしてeval $(docker-machine env dev)から、再試行してください。実行docker-machine env devして、エクスポートする環境変数を確認することもできます。DOCKER_HOSTエラーメッセージで設定が必要な場合があるように、そのうちの1つがであることに注意してください。


2
そのコマンド(eval "$(docker-machine env default)")をbin / postactivateに入れて、常に最新であることを確認できます。
Dannid 2016

1
bin / postactivateファイルはどこにありますか?
Lukas Schulze

または、Dockerをインストールするのを忘れました: $ eval $(docker-machine env dev) Command 'docker-machine' not found, but can be installed with: sudo snap install docker
R OMS

224

私のための簡単な解決策: sudo docker-compose up


UPDATE 2016-3-14:docker installプロセス(またはdocker-compose?)のある時点で、ユーザー名を「docker」グループに追加するための提案と例があります。これにより、次のようにすべてのdockerコマンドの前に「sudo」を必要としないようにすることができます。

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

インストールコマンドの出力(dockerとdocker-composeの2番目のインストールの両方)を注意深く確認すると、必要な手順が見つかります。こちらにも記載されています:https : //subosito.com/posts/docker-tips/

須藤?番号!

コマンドを発行するたびにsudo dockerを入力するのにうんざりしていませんか?ええ、それに対処する方法があります。当然、Dockerにはrootユーザーが必要ですが、Docker操作にrootと同等のグループを与えることができます。

dockerというグループを作成し、目的のユーザーをそのグループに追加できます。dockerサービスを再起動すると、ユーザーはdocker操作を実行するたびにsudoを入力する必要がなくなります。シェルコマンドではどのように見えますか?ルートとして、ここに行きます:

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

できた!

2017年3月9日更新

Dockerのインストール手順がここで更新されました。

Linuxのインストール後の手順

このセクションでは、Dockerでより適切に動作するようにLinuxホストを構成するためのオプションの手順について説明します。

root以外のユーザーとしてDockerを管理する

dockerデーモンは、TCPポートではなくUnixソケットにバインドします。デフォルトでは、Unixソケットはユーザーrootが所有しており、他のユーザーはsudoを使用してのみアクセスできます。dockerデーモンは常にrootユーザーとして実行されます。

dockerコマンドを使用するときにsudoを使用したくない場合は、dockerという名前のUnixグループを作成し、そこにユーザーを追加します。Dockerデーモンが起動すると、Unixソケットの所有権がdockerグループによって読み取り/書き込み可能になります。

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
Jamie Hutber 2016年

12
代わりに、ログアウトの...あなたはコマンドを使用することができます:newgrp docker
チアゴ・ファルカン

サブ質問付きの詳細な回答:-)
Sukumaar

1
再:「私のための簡単な解決策:sudo docker-compose up」。私はそれをしようとすると、私が手:sudo: docker-compose: command not found
mblakesley

37

を使用してdockerを起動した場合はsudo、次のようにdocker-compose upを実行する必要がありますsudosudo docker-compose up


sudo docker-compose build代わりに走ったとき、それは私のために働きましたdocker-compose build
anms_pro

26

デフォルトではsudo、Docker デーモンは常にrootユーザーとして実行されるため、Dockerコマンドに付加する必要があります。

dockerコマンドを使用するときにsudoを使用したくない場合は、dockerという名前のUnixグループを作成し、そこにユーザーを追加します。Dockerデーモンが起動すると、Unixソケットの所有権がdockerグループによって読み取り/書き込み可能になります。

Dockerグループを作成してユーザーを追加するには:

  1. Dockerグループを作成します。

    $ sudo groupadd docker

  2. ユーザーをdockerグループに追加します。

    $ sudo usermod -aG docker $USER

  3. ログアウトしてから再度ログインすると、グループメンバーシップが再評価されます。

  4. sudoがなくてもコマンドをドッキングできることを確認します。

    $ docker run hello-world

このコマンドは、テストイメージをダウンロードしてコンテナーで実行します。コンテナが実行されると、情報メッセージを出力して終了します。

上記の手順は、Docker公式ドキュメントに基づいています


WindowsにインストールされたDockerでこれを行うにはどうすればよいですか?
ジェフクック

それ以外に、私がdocker-composeを修正するために実行docker-composeしたのは、実行中のユーザーを所有者として設定し、/usr/local/bin/docker-composeサービスを再開することでした
Sam

groupメンバーシップを更新するsu - $USERと、ログオフとログオンを保存できます
Stuart Cardall

19

エラーが発生した場合:

エラー:http + docker:// localhostでDockerデーモンに接続できませんでした-実行中ですか?

ソリューションは、次のようになります。

  1. まず、リモート/ローカルマシンでDockerサービスが期待どおりに稼働していることを確認します。sudo service docker status

    実行されていない場合、sudo service docker start またはsudo systemctl start docker(Linuxのバージョンによっては、Dockerの開始手順を参照)

  2. 次に、sudoとして docker 起動します sudo docker-compose up


16

sudo systemctl start docker -Dockerサービスを開始します。

sudo docker-compose up その後。

私は、Fedora 26持っている、と私は最終的に入力したのと同じ問題が解決しようとするとページのFedora開発者にドッカー作曲をして、ページのFedora開発者にドッカー私を助けてくれ、。

おそらく、コミュニティによってシステムから開始され、常にバックグラウンドで実行されると考えられるdockerサービスですが、私にとってはそれほど明白ではなかったため、このような一般的な回答がない理由を私は考えることができます。

のFedora開発者のページの指示には、システムを起動するドッカーを有効にする方法があります:

sudo systemctl enable docker


Macで実行しsystemctlているlaunchctl場合はに置き換えます。
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

docker-machineを使用している場合は、env 変数を使用して環境をアクティブにする必要があります。docker-machineを使用していない場合は、sudoでコマンドを実行してください


3

誰かがログをチェックしましたか?

私の場合のエラーメッセージ/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" 

言及した価値 $ sudo service openvpn stop $ sudo service docker restart $ docker-compose up|start $ sudo service openvpn start があるので、VPNをオンにしたので 、解決策でした。


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たが、問題は解決しました。


3

実行中docker-compose pull-エラーが発生していました

エラー:http + docker:// localhostでDockerデーモンに接続できませんでした

走っていますか?

解決 -

sudo service docker start 

問題は解決された


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ビルドに必要なかったため、ファイル/フォルダーをファイルに追加するだけであることがわかりました。別の解決策はchownchmodそれであったかもしれません。

とにかく、多分これは実際には何の関係もない同じ問題に遭遇しdocker、誤解を招くエラーメッセージが表示されるのを助けるかもしれません。


私は同じ問題を抱えていました:マウントされたボリューム内のファイル権限。私の場合、Dockerボリュームに配置されたrootが所有するSSL証明書がありました。chown/ chmodそれを修正しました。ひどいエラーメッセージですが、彼らはそれに取り組んでいます。github.com/docker/compose/issues/5318
bcattle

2

$ sudo docker-compose up

上記の回答にある手順に従って、$ USERをグループDockerに追加しました。私のドッカーのインストールではdockerという名前のグループが自動的に作成されたため、新しいグループドッカーを追加したくありませんでした。

Docker CEがインストールされ、実行されています。Dockerグループが作成されますが、ユーザーは追加されません。Dockerコマンドを実行するには、sudoを使用する必要があります。Linuxポストインストールに進み、非特権ユーザーがDockerコマンドを実行できるようにし、その他のオプションの構成手順を実行します。

しかし、docker-compose upを使用しても機能しませんでした。以前と同じエラーが発生しました。だから私の場合(Ubuntu 18.10)sudo docker-compose upで問題が修正されました。

PS:@Tiwアドバイスありがとうございます。


1
多分それはソリューションを最初に置き、その下で説明する方が良いでしょう。また、エディタのこれらのボタンを使用して、回答をより適切にフォーマットできます。
Tiw

2

私はそれがばかげていることを知っていますが、私の場合、試してみただけでsudo、それは魅力のように機能しました。

あなたの場合、ただ試してください: $ sudo docker-compose up


1

これを試して:

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


1

次の手順で問題を解決しました

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

今docker-compose upが機能しています


0

私にとっては、Dockerのアップグレードを開始し、途中でキャンセルしました。Dockerが実行されていないことに気付きませんでした(実行されている場合は、Macbookの上部のナビゲーションバーに、バッテリーの残量や時間などのアイコンがあります)。起動してアップグレードが完了すると、docker-compose up再び動作しました!


0

私のセットアップには、このエラーの2つのケースがあります。

  • __pycache__ コンテナー内で統合テストを実行した後にrootユーザーが作成したファイルは、docker(元の問題を伝える)およびdocker-compose(Dockerホストについてあいまいに伝える)にはアクセスできません。
  • microk8s 停止するまでポートをブロックしました。

0

デーモンを起動するために実行するdockerdsudo dockerd、必要に応じて最初に実行してください。あなたが起動した場合dockerdsudoあなたが実行したいことdocker-compose upsudoもできます。それ以外の場合は問題ありません。

https://github.com/docker/compose/issues/4181の実用的なソリューション


0

ログアウトしてから再度ログインすると、役に立ちました。私の場合、新規インストールで、新しいユーザーを作成し、新しいグループを作成して、そのユーザーをdockerグループに追加しました。

出口出口

その後、サーバーに再度sshします


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.