Docker Toolboxをインストールしたら、Docker Machineを作成します。
Docker Toolboxをインストールしていない人はまずはこちらを参考にインストールしてください。
Docker Machineの作成はアプリ、コマンドどちらからでも可能です。
Docker Machineの作成
- アプリから
作成したらdocker-machine
コマンドで確認ができます。
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
default * virtualbox Running tcp://192.168.99.100:2376
- コマンドから
$ docker-machine create --driver virtualbox default2
Running pre-create checks...
Creating machine...
Waiting for machine to be running, this may take a few minutes...
Machine is running, waiting for SSH to be available...
Detecting operating system of created instance...
Provisioning created instance...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
To see how to connect Docker to this machine, run: docker-machine env default2
こちらも作成が完了したらdocker-machine ls
コマンドで確認ができます。
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
default - virtualbox Running tcp://192.168.99.100:2376
default2 - virtualbox Running tcp://192.168.99.101:2376
また、確認だけならVirtualboxからでも確認が可能です。
defaultがアプリ、default2がコマンドから作成したDocker Machineとなります。
アプリ、コマンドどちらで作成したにせよ、操作はコマンドで行っていきます。
環境変数のセットアップ
docker-machine create
コマンドで作成した場合、環境変数を設定する必要があります。
設定する環境変数はdocker-machine env <Docker Machine名>
で確認ができます。
defaultとdefault2の両方の環境変数を確認してみましょう。
- defaultの場合
$ docker-machine env default
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/kohei/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
# Run this command to configure your shell:
# eval "$(docker-machine env default)"
- default2の場合
$ docker-machine env default2
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.101:2376"
export DOCKER_CERT_PATH="/Users/kohei/.docker/machine/machines/default2"
export DOCKER_MACHINE_NAME="default2"
# Run this command to configure your shell:
# eval "$(docker-machine env default2)"
どちらも行末を見ると、eval "$(docker-machine env default2)"
の記載があります。
このコマンドを実行することで上記のexportしている環境変数を呼び出し、設定しています。
アプリから起動した場合は自動的に設定されるため設定は不要ですが、
一旦、ターミナルを抜けると設定が消えてしまうので、新たに設定し直す必要があります。
また、設定されているかどうかはenv | grep DOCKER
で確認できます。
それではdefault2の環境変数を設定します。
$ eval "$(docker-machine env default2)"
$ env | grep DOCKER
DOCKER_HOST=tcp://192.168.99.101:2376
DOCKER_MACHINE_NAME=default2
DOCKER_TLS_VERIFY=1
DOCKER_CERT_PATH=/Users/kohei/.docker/machine/machines/default2
これでdocker
コマンドを利用してDocker Machineへアクセスできるようになりました。
[設定前]
$ docker ps
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
[設定後]
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
また、どのDocker Machineへ現在アクセス可能かを確認するにはdocker-machine ls
コマンドを利用します。
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
default - virtualbox Running tcp://192.168.99.100:2376
default2 * virtualbox Running tcp://192.168.99.101:2376
"ACTIVE"の項目が"*"になっている方がアクセス可能な状態です。
現在、default2がActiveとなっていますが、これをdefaultへ変更します。
$ eval "$(docker-machine env default)"
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
default * virtualbox Running tcp://192.168.99.100:2376
default2 - virtualbox Running tcp://192.168.99.101:2376
defaultの"ACTIVE"が"*"に変更されました。
このように、もし、アクセスするDocker Machineを変更したい場合は、セットアップコマンドで変更してください。
また、ローカル環境からいろんな環境へアクセスできるのは便利ですが、誤った環境へ作業を行わないよう注意が必要です。
作業を行う際は必ずdocker-machine ls
などで、どの環境へアクセスしている状態かを確認するようにしましょう。