env¶
docker
コマンドの実行時に、特定のマシンを指し示せるような環境変数を表示します。
$ docker-machine env --help
Usage: docker-machine env [OPTIONS] [arg...]
Display the commands to set up the environment for the Docker client
Description:
Argument is a machine name.
Options:
--swarm Display the Swarm config instead of the Docker daemon
--shell Force environment to be configured for a specified shell: [fish, cmd, powershell], default is sh/bash
--unset, -u Unset variables instead of setting them
--no-proxy Add machine IP to NO_PROXY environment variable
docker-machine env マシン名
を実行すると、サブシェル上で実行可能な export
コマンドが表示されます。 docker-machine env -u
を実行すると、この効果を無効化する unset
コマンドを表示します。
$ env | grep DOCKER
$ eval "$(docker-machine env dev)"
$ env | grep DOCKER
DOCKER_HOST=tcp://192.168.99.101:2376
DOCKER_CERT_PATH=/Users/nathanleclaire/.docker/machines/.client
DOCKER_TLS_VERIFY=1
DOCKER_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.
上記の出力は bash
や zsh
シェル上での実行を想定したものです(どのシェルを使っているか分からなければ、大抵の場合 bash
でしょう)。しかし、Docker Machine がサポートしているシェルはこれだけではありません。どのようなコマンドを使うかは、それぞれの環境にあわせる必要があります。現時点では bash
、 cmd
、 powershell
、 emacs
のシステムをサポートしています。
もし fish
を使っており、 SHELL
環境変数が fish
のパスを適切に設定しているのであれば、 docker-machine env マシン名
を実行すると、 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-machine env
コマンドはシェルを自動的に検出します。しかし、もし Windows でパワーシェルや cmd.exe
を使う場合であれば、自動検出できません。そのため、 docker-machine env
に自分で --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 dev
set DOCKER_TLS_VERIFY=1
set DOCKER_HOST=tcp://192.168.99.101:2376
set DOCKER_CERT_PATH=C:\Users\captain\.docker\machine\machines\dev
set DOCKER_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 プロキシが必要なネットワーク環境では、ローカルの仮想マシン・プロバイダ(例: virtualbox
や vmwarefusion
)で docker-machine
を使うのにこれが役立ちます。
$ docker-machine env --no-proxy default
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.104:2376"
export DOCKER_CERT_PATH="/Users/databus23/.docker/machine/certs"
export DOCKER_MACHINE_NAME="default"
export NO_PROXY="192.168.99.104"
# Run this command to configure your shell:
# eval "$(docker-machine env default)"
また、 設定ドキュメント から、 docker-machine create
コマンド作成時に --engine-env
フラグでデーモンの HTTP_PROXY
を指定する方法も参考になるでしょう。