web-dev-qa-db-ja.com

DOCKER_Host変数は何をしますか?

OSXでBoot2Dockerを使用して、Dockerを初めて使用します。起動後、次のメッセージが表示されます。

To connect the Docker client to the Docker daemon, please set
export DOCKER_Host=tcp://192.168.59.103:2375

それでも、それがなくても、基本的なDockerコマンド(docker run hello-worldなど)は正常に機能します。

インストール手順はあまり有益ではありません:

Note: If you see a message in the terminal that looks something like this:
To connect the Docker client to the Docker daemon, please set: 
export  DOCKER_Host=tcp://192.168.59.103:2375
you can safely set the evironment variable as instructed.

「安全」であることを知っているからといって、なぜ有用なのかはわかりません。

私が明確ではないこと:

  1. Docker「クライアント」とは何ですか?
  2. Docker「デーモン」とは何ですか?
  3. Docker「ホスト」とは何ですか? (Boot2Docker VM自体?)
53
Steve Bennett

わかりました。

clientは、OS Xにインストールされるdockerコマンドです。

HostはBoot2Docker VMです。

daemonは、Boot2Docker内で実行されるバックグラウンドサービスです。

この変数は、デーモンへの接続方法をクライアントに指示します。

Boot2Dockerを起動すると、ポップアップするターミナルウィンドウにはすでにDOCKER_Hostが設定されているため、dockerコマンドが機能します。ただし、他のターミナルウィンドウでDockerコマンドを実行するには、この変数を設定する必要がありますこれらのウィンドウで

設定に失敗すると、次のようなメッセージが表示されます。

$ docker run hello-world
2014/08/11 11:41:42 Post http:///var/run/docker.sock/v1.13/containers/create: 
dial unix /var/run/docker.sock: no such file or directory

これを修正する1つの方法は、単にこれを行うことです。

$ export DOCKER_Host=tcp://192.168.59.103:2375

しかし、他の人が指摘したように、これを行う方が良いです:

$ $(boot2docker shellinit)
$ docker run hello-world
Hello from Docker. [...]

この直感的でない可能性のあるBashコマンドを説明するために、boot2docker shellinitを実行すると、環境変数を設定する一連のBashコマンドが返されます。

export DOCKER_Host=tcp://192.168.59.103:2376
export DOCKER_CERT_PATH=/Users/ddavison/.boot2docker/certs/boot2docker-vm
export DOCKER_TLS_VERIFY=1

したがって、$(boot2docker shellinit)を実行すると、これらのコマンドが生成されますそして実行します

67
Steve Bennett

調査の結果、新しいターミナルウィンドウでdockerの使用を開始するときの正しいコマンドは次のとおりです。

$(boot2docker shellinit)

私はこれらのコマンドをテストしました:

>>  docker info
Get http:///var/run/docker.sock/v1.15/info: dial unix /var/run/docker.sock: no such file or directory
>>  boot2docker shellinit
Writing /Users/ddavison/.boot2docker/certs/boot2docker-vm/ca.pem
Writing /Users/ddavison/.boot2docker/certs/boot2docker-vm/cert.pem
Writing /Users/ddavison/.boot2docker/certs/boot2docker-vm/key.pem
    export DOCKER_Host=tcp://192.168.59.103:2376
    export DOCKER_CERT_PATH=/Users/ddavison/.boot2docker/certs/boot2docker-vm
    export DOCKER_TLS_VERIFY=1
>> docker info
Get http:///var/run/docker.sock/v1.15/info: dial unix /var/run/docker.sock: no such file or directory

Docker infoが同じエラーを返したことに注意してください。しかし.. $(boot2docker shellinit)...を使用する場合.

>>  $(boot2docker init)
Writing /Users/ddavison/.boot2docker/certs/boot2docker-vm/ca.pem
Writing /Users/ddavison/.boot2docker/certs/boot2docker-vm/cert.pem
Writing /Users/ddavison/.boot2docker/certs/boot2docker-vm/key.pem
>>  docker info
Containers: 3
...
3
ddavison

これは、Dockerホストを指しています!私は次の手順に従いました。

$ boot2docker start

Waiting for VM and Docker daemon to start...
..............................
Started.

To connect the Docker client to the Docker daemon, please set:
    export DOCKER_Host=tcp://192.168.59.103:2375

$ export DOCKER_Host=tcp://192.168.59.103:2375

$ docker run ubuntu:14.04 /bin/echo 'Hello world'
Unable to find image 'ubuntu:14.04' locally
Pulling repository ubuntu
9cbaf023786c: Download complete 
511136ea3c5a: Download complete 
97fd97495e49: Download complete 
2dcbbf65536c: Download complete 
6a459d727ebb: Download complete 
8f321fc43180: Download complete 
03db2b23cf03: Download complete 
Hello world

見る:
http://docs.docker.com/userguide/dockerizing/

0
Rimian