232

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

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

4

30 に答える 30

319

私にとっての簡単な解決策: sudo docker-compose up


UPDATE 2016-3-14: docker インストール プロセス (または 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 デーモンが起動すると、docker グループによる 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

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

于 2016-02-24T05:38:37.933 に答える
101

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

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

于 2015-03-17T22:41:25.897 に答える
7

Linux を使用している場合docker-machine、デフォルトで Windows および Mac コンピュータにのみインストールされるため、インストールしていない可能性があります。

その場合は、https ://docs.docker.com/machine/install-machine/ にアクセスして、お使いのバージョンの Linux にインストールする方法を確認してください。

インストール後、docker-compose up上記の操作を試す前に実行を再試行してください。

これが誰かに役立つことを願っています。これは、Fedora 25 での私の Devilbox インストールで機能しました。

于 2017-01-16T12:22:10.243 に答える
5

ばかげていることはわかっていますが、私の場合、試してみたところsudo、魅力的に機能しました。

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

于 2020-06-09T12:15:59.043 に答える
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 、解決策でした.

于 2016-03-21T16:46:53.293 に答える
4

Linux を使用している場合

試すsudo docker-compose up

于 2021-01-15T00:20:29.777 に答える