Docker Part 2 - docker-machine コマンドの使用方法・流れ
Docker すごい。 何がすごいって環境構築が楽すぎる。以前は、Vagrant と Chef でゴリゴリ書いてアプリケーションが動くように頑張ってましたが、そんな事しなくても大方用意されてる。あとはその組み合わせ環境を構築するだけ。懸念点であった Vagrant 、Chef のような provision が、遅いということは今のところ無い。最初にイメージを DL してコンテナ化するので、若干の時間はかかるものの、それでも早い。 具体的な環境構築については、後日記そうと思う。
今回は docker-machine コマンド(コンテナを動かす vm を管理するコマンド)の使用方法、流れを記す。
前提
- OSX 10.10.5
- Docker Toolbox
- Docker version 1.8.1, build d12ea79
- docker-machine version 0.4.1 (e2c88d6)
- Virtual Box 5.0.3
docker-machine コマンド、流れ
以下のレイヤーと対応するコマンドを覚えておくと、スムーズかもしれない。
レイヤー | 対応コマンド |
---|---|
Docker Container | docker |
Docker VM | docker-machine |
OSX |
Step 1 docker vm を確認する
作成した docker vm を確認する。普段の ls と同じ感じで使う頻度が高い。はじめは何もないので空である。
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
Step 2 docker vm を作成する
docker vm を作成する。 以下のコマンドは、オプション driver で virtualbox を指定して、 vm 名を sample にしている。色々オプションがあるので、もっと詳しくという方は、create を参考にしてください。
$ docker-machine create --driver virtualbox sample
Creating VirtualBox VM...
Creating SSH key...
Starting VirtualBox VM...
Starting VM...
To see how to connect Docker to this machine, run: docker-machine env sample
Step 1 の通り、作成した docker vm を確認してみる。vm が作成されているとともに、STATE を見ることで動作していること、URL を見ることで IP が割り振られていることが確認できる。
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
sample virtualbox Running tcp://192.168.99.103:2376
Step 3 docker vm を利用する
Step 2 まででは、対象の docker vm にコンテナを操作するコマンド(docker ps など)を実行できない。SSH で対象 vm に入れば可能だが、そんな面倒くさいことは毎回したくない。 そこで、以下のように env -> eval コマンドを実行して、利用する docker vm の環境変数を設定する。設定した docker vm の ACTIVE に * が記される。
$ docker-machine env sample
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.103:2376"
export DOCKER_CERT_PATH="/Users/mizuki-y/.docker/machine/machines/sample"
export DOCKER_MACHINE_NAME="sample"
# Run this command to configure your shell:
# eval "$(docker-machine env sample)"
$ eval "$(docker-machine env sample)"
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
sample * virtualbox Running tcp://192.168.99.103:2376
これで今後利用する docker コマンドは docker vm である sample に発行される。
その他
docker vm の中身を確認する ssh で入る
$ docker-machine ssh sample
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\_______/
_ _ ____ _ _
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.8.1, build master : 7f12e95 - Thu Aug 13 03:24:56 UTC 2015
Docker version 1.8.1, build d12ea79