env

docker コマンドの実行時に、特定のマシンを指し示せるような環境変数を表示します。

$ docker-machine env --help
使い方: docker-machine env [オプション][引数...]Docker クライアント用の環境変数をセットアップするコマンドを表示
説明: 引数はマシン名。
オプション: --swarm Docker デーモンの代わりに Swarm の設定を表示 --shell 環境変数を設定するシェルを指定: [fish, cmd, powershell, tcsh], デフォルトは sh/bash --unset, -u 環境変数の値を指定せずにリセット --no-proxy マシンの IP アドレスに NO_PROXY 環境変数の追加

docker-machineenvマシン名 を実行したら、サブシェル上で実行可能な export コマンドが表示されます。 docker-machineenv-u を実行したら、この効果を無効化する unset コマンドを表示します。

$ env | grep DOCKER
$ eval"$(docker-machine env dev)"$ env | grep DOCKERDOCKER_HOST=tcp://192.168.99.101:2376DOCKER_CERT_PATH=/Users/nathanleclaire/.docker/machines/.clientDOCKER_TLS_VERIFY=1DOCKER_MACHINE_NAME=dev
$ # If you run a docker command, now it will run against that host.$ eval"$(docker-machine env -u)"$ env | grep DOCKER
$ # The environment variables have been unset.

上の出力は bashzsh シェル上での実行を想定したものです(どのシェルを使っているか分からなくても、大抵の場合は bash でしょう)。しかし、Docker Machine がサポートしているシェルはこれだけではありません。どのようなコマンドを使うかは、それぞれの環境にあわせる必要があります。現時点では bashcmdpowershellemacs のシステムをサポートしています。

もし fish を使っており、 SHELL 環境変数が fish のパスを適切に設定しているのであれば、 docker-machineenvマシン名 を実行したら、 fish を想定した形式で値を表示します。

set -x DOCKER_TLS_VERIFY 1;set -x DOCKER_CERT_PATH "/Users/nathanleclaire/.docker/machine/machines/overlay";set -x DOCKER_HOST tcp://192.168.99.102:2376;set -x DOCKER_MACHINE_NAME overlay# Run this command to configure your shell:# eval "$(docker-machine env overlay)"

docker-machineenv コマンドはシェルを自動的に検出します。しかし、もし Windows でパワーシェルや cmd.exe を使う場合であれば、自動検出できません。そのため、 docker-machineenv に自分で --shell フラグのオプションを上書き指定する必要があります。

パワーシェルの例:

$ docker-machine.exe env --shell powershell dev$Env:DOCKER_TLS_VERIFY ="1"$Env:DOCKER_HOST ="tcp://192.168.99.101:2376"$Env:DOCKER_CERT_PATH ="C:\Users\captain\.docker\machine\machines\dev"$Env:DOCKER_MACHINE_NAME ="dev"# Run this command to configure your shell:# docker-machine.exe env --shell=powershell dev | Invoke-Expression

cmd.exe の例:

$ docker-machine.exe env --shell cmd devsetDOCKER_TLS_VERIFY=1setDOCKER_HOST=tcp://192.168.99.101:2376setDOCKER_CERT_PATH=C:\Users\captain\.docker\machine\machines\devsetDOCKER_MACHINE_NAME=dev# Run this command to configure your shell: copy and paste the above values into your command prompt

プロキシを使わずにマシンを作成

env コマンドは --no-proxy フラグをサポートしています。これは、作成するマシンの IP アドレスに NO_PROXY / no_proxy環境変数 を追加します。

インターネットへのアクセスに HTTP プロキシが必要なネットワーク環境では、ローカルの仮想マシン・プロバイダ(例: virtualboxvmwarefusion )で docker-machine を使うのにこれが役立ちます。

$ docker-machine env --no-proxy defaultexportDOCKER_TLS_VERIFY="1"exportDOCKER_HOST="tcp://192.168.99.104:2376"exportDOCKER_CERT_PATH="/Users/databus23/.docker/machine/certs"exportDOCKER_MACHINE_NAME="default"exportNO_PROXY="192.168.99.104"# Run this command to configure your shell:# eval "$(docker-machine env default)"

また、 create 用の設定ドキュメント では、 docker-machinecreate コマンドで作成時に --engine-env フラグでデーモンの HTTP_PROXY を指定する方法も参考になるでしょう。