MacのxhyveでDockerを使う

xhyve(いまだに発音がわからない)の仕組みは全く理解してないけど,xhyveとboot2dockerを使ってdockerコマンドを叩くまで.

参考

概要

  • 環境
    • 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