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