Edited at

Docker Machineの作成

More than 3 years have passed since last update.

Docker Toolboxをインストールしたら、Docker Machineを作成します。

Docker Toolboxをインストールしていない人はまずはこちらを参考にインストールしてください。

Docker Machineの作成はアプリ、コマンドどちらからでも可能です。


Docker Machineの作成



  • アプリから

    Launchpadから「Docker Quickstart Terminal」を起動させます。

    docker-toolbox7-300x83.png

    作成したらdocker-machineコマンドで確認ができます。



    $ docker-machine ls
    NAME ACTIVE DRIVER STATE URL SWARM
    default * virtualbox Running tcp://192.168.99.100:2376





    • コマンドから

      docker-machine createコマンドで作成します。

      $ 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からでも確認が可能です。

      docker-machine_virutlabox1.png

      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などで、どの環境へアクセスしている状態かを確認するようにしましょう。