Docker Machine を試す!

docker-machine

docker-machine は Docker ホストを管理するツールで、ホストとなる Docker コンテナ起動サーバが、VM や AWS、 Digital Ocean などの ホストへ接続し実行する事で、あたかも local で docker コンテナが動いているかのように振る舞うツール。
Docker コンテナ管理ツールとしても仕様できるみたい。

docker インストール

まずは、 dokcer のインストール

# Docker install
wget -qO- https://get.docker.com/ | sh
# version を確認しておく。
docker --version
# 以下が表示される
#    Docker version 1.8.2, build 0a8c2e3
# ユーザーを docker グループに追加
sudo usermod -aG docker $USER

docker-machine インストール

続いて、 docker-machine をインストールする。

cd ~/Download
wget https://github.com/docker/machine/releases/download/v0.4.1/docker-machine_linux-amd64
sudo mkdir -p /opt/bin
sudo mv docker-machine_linux-amd64 /opt/bin/docker-machine
sudo chmod +x /opt/bin/docker-machine

# docker-machine version 確認
# /opt/bin にパスが通っている事!
docker-machine -v
# 以下のようにバージョンが表示される
#   docker-machine version 0.4.1 (e2c88d6)

# docker-machin の作成
# docker-machine [--debug] create --driver virtualbox [マシン名]
docker-machine --debug create --driver virtualbox dev
# エラーがでて以下を実行しろと怒られたので実行。
#   sudo /etc/init.d/vboxdrv setup
# 再実行時、既に マシンが存在すると怒られるので、以下で削除できる
#   docker-machine rm dev

# docker-machine の一覧表示
docker-machine ls
# 以下のような結果が表示される
#  NAME   ACTIVE   DRIVER       STATE     URL                         SWARM
#  dev    *        virtualbox   Running   tcp://192.168.99.100:2376

# ホストマシンのDocker Remote API のエンドポイントや、certファイルのパスが表示される
docker-machine env dev
# 以下のような結果が表示される
#   export DOCKER_TLS_VERIFY="1"
#   export DOCKER_HOST="tcp://192.168.99.100:2376"
#   export DOCKER_CERT_PATH="/home/username/.docker/machine/machines/dev"
#   export DOCKER_MACHINE_NAME="dev"
#   # Run this command to configure your shell:
#   # eval "$(docker-machine env dev)"
# 指示通り実行
eval "$(docker-machine env dev)"
# 上記コマンドで、 `virtual-machine` 上で動くコンテナをあたかもローカルで動いているかのように操作できる。
doker images
#   REPOSITORY             TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
#   docker/gitlab          latest              8e122d458cf4        5 hours ago         654.1 MB
#   sameersbn/gitlab       8.0.4               e6964ca49453        3 days ago          653.5 MB
#   sameersbn/redis        latest              7bfd2b846d7b        6 weeks ago         196.9 MB
#   sameersbn/ubuntu       14.04.20150825      2bde99560607        6 weeks ago         194.8 MB
#   sameersbn/postgresql   9.4-3               6fc4cce07194        9 weeks ago         231.6 MB
# 後は docker コマンドで自由に操作するだけ!

Tips

# ワンライナコマンドオプションの表示
docker-machine config dev
# 以下のような結果が表示される
#  --tlsverify --tlscacert="/home/username/.docker/machine/machines/dev/ca.pem" --tlscert="/home/username/.docker/machine/machines/dev/cert.pem" --tlskey="/home/username/.docker/machine/machines/dev/key.pem" -H=tcp://192.168.99.100:2376%
# これを利用して以下でも起動できるらしい
# docker $(docker-machine config dev) ps

# マシンのストップ
docker-machine stop dev
# ストップしたマシンのスタート
docker-machine start dev

# docker machine へ ssh 接続

docker-machine ssh dev
#                         ##         .
#                   ## ## ##        ==
#                ## ## ## ## ##    ===
#            /"""""""""""""""""\___/ ===
#       ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
#            \______ o           __/
#              \    \         __/
#               \____\_______/
#  _                 _   ____     _            _
# | |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
# | '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
# | |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
# |_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
# Boot2Docker version 1.8.2, build master : aba6192 - Thu Sep 10 20:58:17 UTC 2015
# Docker version 1.8.2, build 0a8c2e3

# docker machine へ ssh 経由でコマンド発行
docker-machine ssh dev "hostname && uname -a"
# 以下が表示される
#   dev
#   Linux dev 4.0.9-boot2docker #1 SMP Thu Sep 10 20:39:20 UTC 2015 x86_64 GNU/Linux

参考