MacのxhyveでDockerを使う
xhyve(いまだに発音がわからない)の仕組みは全く理解してないけど,xhyveとboot2dockerを使ってdockerコマンドを叩くまで.
参考
- mist64/xhyve
- xhyve – Lightweight Virtualization on OS X Based on bhyve | pagetable.com
- ailispaw/boot2docker-xhyve
概要
- 環境
- Mac mini (Mid2011)
- OS X Yosemite (10.10.4)
- いちおう背景とか
- Dockerとは最近流行りのコンテナ型仮想化ユーティリティ
- Dockerを使うにはLinuxが必要(Linuxカーネルの機能を使うため)
- MacでDockerを使いたかったら仮想環境などで別途Linuxを用意する必要がある
- そのあたりを勝手にやってくれるBoot2dockerというプロダクトがあった
- 仮想環境としてVirtualBoxを使用している
- KVMをFreeBSDに移植したbhyveをOS Xへ移植したxhyve(かなり語弊があると思う)というプロダクトが最近リリースされた
- VirtualBoxの代わりにxhyveをバックエンドとするboot2docker-xhyveがリリースされたので使ってみた
インストール
xhyve
$ git clone https://github.com/mist64/xhyve
$ cd xhyve
$ make
$ sudo cp build/xhyve /usr/local/bin
boot2docker-xhyve
$ git clone https://github.com/ailispaw/boot2docker-xhyve
$ cd boot2docker-xhyve
$ make
Dockerがセットアップ済みのTiny Core Linuxが起動する
Docker
boot2dockerを使ってみた系の記事を見てるとLinuxへSSHしてdockerコマンドを叩きましょう,みたいなことがたまり書かれてたりするけどDockerはクラサバ型だからMac上にDockerクライアントがインストールされていればよい.
Homebrewで入れるのが一番簡単かな.
$ sudo brew install docker
Dockerサーバはlocalhostではないので別途情報を設定する必要がある. boot2docker-xhyveディレクトリへ移動して以下のコマンドを叩く.
$ export DOCKER_HOST=tcp://`make ip`:2375
dockerコマンドを叩いてみる
$ docker info
Containers: 0
Images: 0
Storage Driver: aufs
Root Dir: /mnt/vda1/var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 2
Dirperm1 Supported: true
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 4.0.5-boot2docker
Operating System: Boot2Docker 1.7.0 (TCL 6.3); master : 7960f90 - Thu Jun 18 18:31:45 UTC 2015
(略)
できた.
boot2docker-xhyveの使い方
makeコマンドはboot2docker-xhyveディレクトリへ移動してから叩く
-
起動
$ make run
または
$ sudo ./xhyverun.sh
-
停止
$ make halt
またはTiny Coreへログインして
$ sudo halt
-
Tiny Coreへログイン
$ make ssh
ユーザ/パスワードは docker/tcuser だが入力は自動でやってくれる.
Tips
-
環境変数DOCKER_HOSTをいちいち設定するのが面倒
.bashrcなり.zshrcなりに以下を追記(pathは環境に合わせて書き変える)b2d_xhyve_root="/path/to/boot2docker-xhyve" if [ -f ${b2d_xhyve_root}/.mac_address ]; then export DOCKER_HOST=tcp://`${b2d_xhyve_root}/uuid2ip/mac2ip.sh $(cat ${b2d_xhyve_root}/.mac_address)`:2375 fi
-
起動,停止も面倒
同様に以下を追記
start-docker
で起動,halt-docker
で停止alias start-docker=' \ pushd ${b2d_xhyve_root} >/dev/null; \ make run; \ popd >/dev/null' alias halt-docker=' \ pushd ${b2d_xhyve_root} >/dev/null; \ make halt; \ popd >/dev/null'
comments powered by Disqus