LoginSignup
39
46

More than 5 years have passed since last update.

Docker Machineを使ってDockerホストを立てる(VMware Fusion 7編)

Last updated at Posted at 2015-03-07

はじめに

先日発表のあった、Docker 社公式のオーケストレーションツールである Docker Machine を使って、 VMware Fusion 7 へ Docker ホストを立ててみました。
Docker Machine と各環境向けドライバを組み合わせる事で、パブリッククラウドから手元のノートパソコンまで、統一的な操作で自動的に Docker ホストを構築する事が出来ます。

osx_yosemite+docker+vmware_fusion_7.png

構築環境

  • MacBook Pro (Retina, 13-inch, Late 2013)
    • OS : Mac OS X Yosemite (10.10.2)
    • CPU : 2.8 GHz Intel Core i7
    • Mem : 16 GB 1600 MHz DDR3
  • Docker (1.5.0)
  • Docker Machine (v0.1.0)
  • VMware Fusion 7 (Pro 7.1.1)

事前準備

  • 対象環境に VMware Fusion 7 がセットアップ済みの状態としてください
  • docker コマンドがセットアップ済みの状態としてください

docker コマンドのインストールは brew が入っていれば簡単です

% brew upgrade ; brew update ; brew install docker
Already up-to-date.
==> Downloading https://homebrew.bintray.com/bottles/docker-1.5.0.yosemite.bottle.tar.gz
Already downloaded: /Library/Caches/Homebrew/docker-1.5.0.yosemite.bottle.tar.gz
==> Pouring docker-1.5.0.yosemite.bottle.tar.gz
==> Caveats
Bash completion has been installed to:
  /usr/local/etc/bash_completion.d

zsh completion has been installed to:
  /usr/local/share/zsh/site-functions
==> Summary
?  /usr/local/Cellar/docker/1.5.0: 9 files, 7.2M
$
$ docker version
Client version: 1.5.0
Client API version: 1.17
Go version (client): go1.4.1
Git commit (client): a8a31ef
OS/Arch (client): darwin/amd64
FATA[0000] Get http:///var/run/docker.sock/v1.17/version: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?

Docker Machine をセットアップ

Docker Machine のダウンロードURLを確認

GitHub の Docker Machine リポジトリ から最新版の Mac OS X用バイナリを確認

Docker Machine をダウンロード

$ sudo curl -L -o /usr/local/bin/docker-machine https://github.com/docker/machine/releases/download/v0.1.0/docker-machine_darwin-amd64
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   401    0   401    0     0    374      0 --:--:--  0:00:01 --:--:--   374
100 15.5M  100 15.5M    0     0  1781k      0  0:00:08  0:00:08 --:--:-- 3926k
$ 
$ sudo chmod +x /usr/local/bin/docker-machine
$ docker-machine -v
docker-machine version 0.1.0

Docker Machine を使ってみる

Docker Machine を使って VMware Fusion 7 で boot2docker を起動

docker-machine create で起動出来る
--driver で VMware Fusion 7を指定するために vmwarefusion を選ぶ
マシン名は test-docker-host001 とする

$ docker-machine create --driver vmwarefusion test-docker-host001
INFO[0000] Creating CA: /Users/ysaotome/.docker/machine/certs/ca.pem
INFO[0000] Creating client certificate: /Users/ysaotome/.docker/machine/certs/cert.pem
INFO[0001] Downloading boot2docker.iso to /Users/ysaotome/.docker/machine/cache/boot2docker-vmw.iso...
INFO[0010] Creating SSH key...
INFO[0010] Creating VM...
INFO[0011] Waiting for VM to come online...
INFO[0036] "test-docker-host001" has been created and is now the active machine.
INFO[0036] To point your Docker client at it, run this in your shell: $(docker-machine env test-docker-host001)

初回なので、合わせて鍵生成とか行われた

確認

% docker-machine ls
NAME               ACTIVE   DRIVER         STATE     URL                          SWARM
test-docker-host001   *        vmwarefusion   Running   tcp://192.168.112.138:2376

boot2dockerのホストが起動してる!

コンテナの起動確認

該当ホスト上のコンテナ一覧を確認
docker コマンドの引数に $(docker-machine config test-docker-host001) を追加して、該当ホスト上に対してdockerコマンドを発行する

該当ホスト上のコンテナ一覧

$ docker $(docker-machine config test-docker-host001) ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

該当ホスト上では、1台もコンテナが起動していない

良くあるHello Worldをしてみる

docker $(docker-machine config test-docker-host001) run busybox echo hello world
Unable to find image 'busybox:latest' locally
511136ea3c5a: Pull complete
df7546f9f060: Pull complete
ea13149945cb: Pull complete
4986bf8c1536: Pull complete
busybox:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security.
Status: Downloaded newer image for busybox:latest
hello world

ちゃんと表示された!

再度、該当ホスト上のコンテナ一覧を確認

$ docker $(docker-machine config test-docker-host001) ps -a
CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS                     PORTS               NAMES
adb4e8f86121        busybox:latest      "echo hello world"   2 minutes ago       Exited (0) 2 minutes ago                       focused_davinci

ちゃんと残ってる

作成したホストへのログイン

sshでログインしてみる

$ docker-machine ssh test-docker-host001
                        ##        .
                  ## ## ##       ==
               ## ## ## ##      ===
           /""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
           \______ o          __/
             \    \        __/
              \____\______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.5.0, build vmw-1.5.0 : 67fcb7d - Wed Feb 18 10:00:58 UTC 2015
Docker version 1.5.0, build a8a31ef
docker@test-docker-host001:~$

鍵設定済みでノーパスワードログインが出来て便利!

直接コマンドの発行も出来る

% docker-machine ssh test-docker-host001 'uname -a'
Linux test-docker-host001 3.18.5-tinycore64 #1 SMP Wed Feb 18 09:29:51 UTC 2015 x86_64 GNU/Linux

ホストの停止と削除

作成したホストの停止

$ docker-machine stop test-docker-host001

作成したホストの削除

$ docker-machine rm test-docker-host001

確認

$ docker-machine ls
NAME   ACTIVE   DRIVER   STATE   URL   SWARM

気づいた事とか

かなり便利。
boot2docker の Mac OS X 版は VirtualBox 利用が標準になっていて、VMware Fusion で対応するのは多少面倒だったが一気に解消された。
個人的には、Vagrant + Fusionユーザーなので、VMware Fusion をバージョンアップする度に、お布施の様に Supercharged Vagrant environments. を購入してきたが、これで開放されそう。

引数のdriverを切り替える事で、様々な環境を統一的なコマンドで一元的に管理出来る破壊力を感じた。

起動時のオプション

ドキュメントによると設定項目は下記の通り
沢山コンテナを起動するのであれば、メモリやディスクは拡張したい所なので、オプションで簡単に設定出来るのは嬉しい。

環境変数 CLI引数 意味
FUSION_BOOT2DOCKER_URL --vmwarefusion-boot2docker-url boot2dockerのイメージURL
FUSION_DISK_SIZE --vmwarefusion-disk-size boot2dockerで利用するディスクサイズ(デフォルト:20000MB)
FUSION_MEMORY_SIZE --vmwarefusion-memory-size boot2dockerで利用するメモリサイズ(デフォルト:1024MB)

2ホスト同時に起動しようとするとエラーになる

test-docker-host001 を作成している状態で test-docker-host002 を作成しようとするとエラー
v0.2.0で修正されそうな雰囲気

% docker-machine create --driver vmwarefusion test-docker-host002
INFO[0000] Creating SSH key...
INFO[0000] Creating VM...
INFO[0001] Waiting for VM to come online...
ERRO[0025] Error creating machine: dial tcp 192.168.112.139:22: connection refused
WARN[0025] You will want to check the provider to make sure the machine and associated resources were properly removed.
FATA[0025] Error creating machine

39
46
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
39
46