web-dev-qa-db-ja.com

Docker-ComposeはDocker Daemonに接続できません

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

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

62
daveskylark

私はこれを見つけ、それが私の問題を解決するように見えました。

GitHub Fix Docker Daemon Crash

リンクにあるように、docker-compose-deps.ymlファイルの内容を変更しました。それからdocker-compose -f docker-compose-deps.yml up -dを実行しました。それから私はそれを元に戻し、何らかの理由で機能しました。提供したリンクの手順を続行する必要はありませんでしたが、最初の2つの手順で問題は修正されました。

0
daveskylark

15分のデバッグの後、同じエラーが発生しました。必要なのはSudoだけです:) [Dockerグループの作成]をチェックしてください https://docs.docker.com/engine/installation/linux/ubuntulinux/ でSudoを削除しますプレフィックス。

170
Mahmoud Zalt

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なし)として実行できます。 Linux post-install docs に詳細があります。ショートバージョン:

$ 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グループのユーザーは、dockerなしでSudoおよびdocker-composeコマンドを実行できます。 Docker自体はルートを実行し、いくつかの攻撃を許可します。そのため、実行するコンテナーに注意する必要があります。詳細については、 Docker Security Documentation を参照してください。

14
jwhitlock

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

service docker start

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

8
R A

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

docker info

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

Unix:///var/run/docker.sockのDockerデーモンソケットに接続しようとしたときに許可が拒否されました:Get http:///var/run/docker.sock/v1.38/info :Unix /var/run/docker.sockにダイヤル:接続:許可が拒否されました

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

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

ほら!

5
madjaoue

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

4
cweiske

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

  1. Dockerログを確認する

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

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

$ Sudoドッカー-d -D

3
Manish R

このエラーが表示される別の理由:私にとっては、docker-compose.ymlの不正な画像パス定義でした:

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

Lookisは最初は大丈夫ですが、envでCONTAINER_REGISTRY_BASE=eu.gcr.io/my-project/を設定しました。明らかに、画像パスの//がこのエラーの原因でした。

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

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

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

$ Sudo systemctl start docker

開始するかどうかを確認するコマンド:

$ Sudo docker run hello-world

2
John_J

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

$ Sudo systemctl start docker
$ Sudo docker-compose build

私の場合、docker-compose buildをしようとすると同じエラーが発生し、ソリューションはSudoを追加するだけでした

Sudo docker-compose build
0
Andrey Suglobov

これをSudoとして実行すると、問題が解決しました

0
Mohamed Diouane

デフォルトのマシンを削除した可能性はわずかですか?ただし、最初にすべてのファイルが存在するかどうかを確認してください(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

この後、ビルド、構成、および他のすべてのコマンドが適切に動作するはずです。

0
rapttor

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

Sudo usermod -aG docker your-user
0
Zhiiker