Docker-ComposeがDocker Daemonに接続できない


114

Dockerデーモンに接続できないというエラーメッセージが表示されます。私は同様の問題を抱えている他の人々の答えを調べましたが、助けにはなりませんでした。Ubuntu 15.10のバージョンを実行しています。私が持っているすべての情報を提供しようとします。

root@# docker-compose -f docker-compose-deps.yml up -d
ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?

If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.

Dockerバージョン

root@# sudo docker     version
Client:
Version:      1.9.1
API version:  1.21
Go version:   go1.4.2
Git commit:   a34a1d5
Built:        Fri Nov 20 13:20:08 UTC 2015
OS/Arch:      linux/amd64
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

Docker-Composeバージョン

root@# docker-compose --version
docker-compose version 1.5.2, build 7240ff3

これは、サービスを停止または開始しようとするとどうなりますか...

root@# sudo service docker stop
stop: Unknown instance: 
root@# sudo service   docker start
docker start/running, process 5375

走れば ps aux | grep docker

root@# ps aux | grep docker
root      4233  0.0  0.0  13692  2204 pts/15   S+   10:27   0:00 grep --color=auto docker

どんな助けでも大歓迎です。これ以上情報が必要な場合はお知らせください。


1
投稿を破壊しないでください。質問を投稿すると、(CC-by-SAライセンスに基づいて)Stack Overflowコミュニティ全体にコンテンツのライセンスが付与されます。この投稿とアカウントの関連付けを解除する場合は、関連付け解除リクエストの適切なルートを教えてください
バグ

回答:


266

15分のデバッグ後、同じエラーが発生しました。それが必要とするすべての判明があるsudo:)ここでは[ドッカーグループを作成する]チェックhttps://docs.docker.com/engine/installation/linux/ubuntulinux/のsudo接頭辞を取り除くために。


35
彼らはより良いエラーを必要としています= /この質問には13,000のビューがあります
ジョナサン

4
男、あなたは投票した人のためだけに約30時間節約しました、そしておそらくそれは実際に節約した時間のたった1%です
vak

5
sudo私の意見では、本当の修正はDockerグループを作成することですが、これは単なる回避策/ハックです。グループ作成の部分はここでは説明されていませんが、リンクのみが示され、そのリンクの内容が変更されたため、これはリンクのみの回答であると見なします。そのグループを追加する方法の説明を追加できますか?
hoijui

2
sudoも悪い考えだと思います。root以外のユーザーとしてドッカーを管理するためのドッカーのドキュメントを参照してください。docs.docker.com/engine/installation/linux/linux-postinstall/...
jwhitlock

6
基本的に、あなたがする必要があるのはsudo usermod -aG docker $USERであり、それはその後動作します。
user2340939 2018年

65

私はこの問題を抱えていたので、を台無しにしたくありませんでしたsudo。調査するとき、私はいくつかの情報を得ようとしました:

docker info

驚いたことに、次のエラーが発生しました。

unix:///var/run/docker.sockでDockerデーモンソケットに接続しようとしているときに権限が拒否されました:http:///var/run/docker.sock/v1.38/infoを取得してください:unix / varをダイヤルしてください/run/docker.sock:接続:権限が拒否されました

何らかの理由で十分な権限がなかったため、次のコマンドで問題が解決しました:

sudo chown $USER /var/run/docker.sock

エボラ!


dockerを再起動した後はどうですか?私たちはこの町をもう一度やらなければなりませんか?
Light.G 2018年

いいえ、Dockerを再起動すると機能します。しかし、マシンを再起動するとどうなるかわかりません。
madjaoue 2018年

デフォルトでは、Dockerはデフォルトでdocker.sock非ルートグループを保持しdockerます。しかし-G、Dockerデーモンの開始時にフラグを使用して変更できます。私の場合、のグループを追加します$USERNAME。つまり、Dockerグループを追加してから、マシンを再起動します(ubuntu 16.04、PC)。それはうまくいきます。そして、これはドッカーのドキュメントで推奨されています。
Light.G 2018年

3
私にも有効:)
カミルJ.

27

あなたの問題は、Dockerがクラッシュした後にソケットファイルが再作成されなかった古いDockerバグによって作成されたようです。これが問題である場合、ソケットファイルの名前を変更すると、ソケットファイルを再作成できるようになります。

$ sudo service docker stop
$ sudo mv /var/lib/docker /var/lib/docker.bak
$ sudo service docker start

このバグは修正されCouldn't connect to Docker daemonているため、dockerグループに参加しておらず、そのファイルを読み取る権限がないため、エラーを受け取っているほとんどの人がおそらくエラーを受け取っています。で実行するsudo docker ...と問題は解決しますが、優れたソリューションではありません。

Docker sudoは、適切なグループ権限を持つ非rootユーザー(なし)として実行できます。Linuxのドキュメントをインストール後の詳細を持っています。ショートバージョン:

$ sudo groupadd docker
$ sudo usermod -aG docker $USER
# Log out and log back in again to apply the groups
$ groups  # docker should be in the list of groups for your user
$ docker run hello-world  # Works without sudo

これにより、dockerグループのユーザーはなしdockerdocker-composeコマンドを実行できますsudo。Docker自体がルートを実行し、一部の攻撃を許可するため、実行するコンテナには注意が必要です。詳細については、Docker Securityのドキュメントを参照してください。


この質問はLinuxインストールに固有であり、修正にはLinuxホストシステムでの修正に伴う修正が含まれます。同じ詳細でWindows用の同様の質問を投稿すると、より良い情報が得られます。自分を解決するために、Docker for Windowsのドキュメントを
jwhitlock

10

同じ問題がありました。メモを取り、デバッグ結果を分析した後、最後に、同じエラーになる可能性があるものを解決しました。最初にサービスを開始し、

service docker start

ユーザーをdockerグループに含めることを忘れないでください。


このエラーが発生したとき、ルートとして実行していました。sudo他の人のためにそれを修正したように見えた-_-本当に忘れていたのはこれだとわかってうれしい。とても簡単!
ウィル

8

次のようなものでユーザーを「docker」グループに追加する必要があります。

sudo usermod -aG docker $ {USER}


5

にファイルがあったときにこのエラーが発生しました Dockerfile現在のユーザーがアクセスできないディレクトリにある。dockerしたがって、デーモンに完全なコンテキストをアップロードできず、「http + docker:// localunixsocketでDockerデーモンに接続できませんでした」というメッセージが表示されました。


2
ありがとう!これで解決しました。すべてのdockerコマンドは機能しましたが、docker-composeは機能しなかったため、簡単に確認できます。また、docker-composeは別のディレクトリで機能しました。ところで、非常に誤解を招くエラーメッセージです。
Csongor Fagyal 2017

1
これは本当に高くなるはずです
Arlen Anderson

1
ありがとう!私のために働いた。を使用docker build .すると、権限の問題が発生します。
全員

うまくいったことだけ-なぜDockerのエラーメッセージがそれほど悪いのですか?ありがとう!
coderMe

4

これを解決する1つの方法は、まず次のコマンドを実行してユーザーをdockerグループに追加することです。

sudo usermod -aG docker $USER

重要:これを有効にするには、システム(端末だけでなく)からログアウトし、再度ログインしてください。


sudo usermod -aG docker $ {USER}変更を適用するには、ログアウトしてログインする必要もあります
。su-

3

「ps aux | grep docker」の出力から、Dockerデーモンが実行されていないようです。以下の方法を使用して、何が問題で、なぜdockerが起動しないのかを確認してください

  1. Dockerログを確認する

$ sudo tail -f /var/log/upstart/docker.log

  1. デバッグモードでDockerを起動してみてください

$ sudo docker -d -D


2

私の場合、Dockerサービスが停止している可能性があります

Dockerサービスを開始するコマンド:

$ sudo systemctl start docker

起動するかどうかを確認するコマンド:

$ sudo docker run hello-world


2

このエラーが表示されるもう1つの理由:私にとっては、不正な形式のイメージパス定義でしたdocker-compose.yml

  service:
    image: ${CONTAINER_REGISTRY_BASE}/my-service
   ...

Lookisはまず大丈夫ですが、私は環境にCONTAINER_REGISTRY_BASE=eu.gcr.io/my-project/設定しました。どうやら、//画像パスの中にこのエラーが発生しました。

docker-compose: v.1.21.2
docker: 18.03.1-ce

2

だけで試してくださいsudo。許可問題のようです!

sudo docker-compose -f docker-compose-deps.yml up -d

それは私のために働いた。


1

私はUbuntu 16.04を使用し、docker-composeを使用したときにこの問題も発見しました。このコマンドを実行して修正しました。

$ sudo systemctl start docker
$ sudo docker-compose build

1

デフォルトのマシンを削除した可能性はわずかですか?ただし、最初にすべてのファイルが存在するかどうかを確認します(OSX、他のシステムでも同様)

brew install docker docker-compose docker-machine xhyve docker-machine-driver-xhyve
brew link docker docker-compose docker-machine xhyve docker-machine-driver-xhyve

sudo chown root:wheel /usr/local/opt/docker-machine-driver-xhyve/bin/docker-machine-driver-xhyve
sudo chmod u+s /usr/local/opt/docker-machine-driver-xhyve/bin/docker-machine-driver-xhyve

また、コンテナーのメンテナンスがはるかに簡単になるため、Dockerアプリをインストールします。

brew cask reinstall docker

ansはfinderからDockerアプリを開始します(サービスが完全に開始されるまで待ちます)

次に、インスタレーションを確認します。

docker-machine ls

リストにマシンが存在しない場合は、マシンを作成して起動します。

docker-machine create default
docker-machine start default

この後、ビルド、作成、その他すべてのコマンドが適切に機能するはずです。


1

私の場合は、ubuntuの許可があるためです。

  1. リストアイテム

許可を確認

docker info 

問題の許可を出力する ここに画像の説明を入力してください 場合は、

sudo chmod -R 777 /var/run/docker.sock

0

私にとっての修正は、この記事docker-compose使用した新しいバージョン(1.24)をインストールすることでした

以前のバージョン(1.17)はのubuntuデフォルトリポジトリからインストールされましたが、新しいバージョンをインストールした後、なんとかコンテナを起動できました。それが誰かを助けることを願っています。



-1

私の場合、私がしようとしたときに同じエラーが発生しdocker-compose build 、私の解決策は単に追加されましたsudo

sudo docker-compose build

-2

私はこれを見つけました、そしてそれは私の問題を修正するようでした。

GitHub修正Dockerデーモンクラッシュ

リンクにあるように、docker-compose-deps.ymlファイルのコンテンツを変更しました。それから私は走ったdocker-compose -f docker-compose-deps.yml up -d。それから私はそれを元に戻し、それは何らかの理由でうまくいきました。提供したリンクの手順を続行する必要はありませんでしたが、最初の2つの手順で問題が解決しました。


2
ubuntu 16.04:sudoを追加するだけです:sudo
docker

答えとしては十分ではありません。自分の答えを受け入れたい場合は、問題の根本的な理由を突き止める必要があります。そうでなければ、それは他の人にとって本当に誤解を招くでしょう。ところで、ここに他の答えがあります、彼らは助けましたか?あなたからのコメントはなかったので。
Light.G 2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.