スマートデバイスアプリ開発のあれやこれや

Docker環境構築(Mac篇)

巷で流行ってるContainer型仮想環境 DockerをMacにインストールしてみます。
手元の環境は以下の通りです。

1. はじめに(環境概説)

DockerはContainer型仮想環境構築ツールです。
ホストOSとゲストOSでカーネルなどのリソースを共有することで
Hyper-Vのような完全仮想化環境よりも高速展開可能な仮想環境を実現します。


"カーネルの共有"という点がポイントでして
ホストOSとゲストOSがカーネル共有できるようなパターン......
つまりLinux環境ではないとDockerは使えないという制限があります。


Linux寄りの環境とはいえ、Macも例外ではありません。
そのため、Virtual Box上にLinuxのゲストOSを立て
そのゲストOSにDockerコンテナを管理させることで環境を実現します。
(言ってしまえば3層仮想化っぽい感じです)


3構造になるとパフォーマンス面が心配になりますが
VirtualBox上に立てるゲストOSとしてDocker特化型の
超軽量OSイメージである"boot2docker"を用いることで対策しています。

2. boot2dockerをインストールする

公式サイトからboot2dockerのイメージファイルを入手します。

github.com

インストーラを使うと楽なので、pkgファイル版をダウンロードします。
あとはインストーラーに従って次へ次へでインストールが完了します。
ちなみにVirtual Boxも同時にインストールされるので楽ちんです。

3. boot2dockerを初期化する

ターミナルを起動してboot2dockerを初期化します。
と、その前に念のためにインストール確認...

docker --version
# Docker version 1.7.0, build 0baf609


正常にバージョン情報が表示されてればOKです。


続いて、boot2dockerの初期化。

boot2docker init
#Latest release for github.com/boot2docker/boot2docker is v1.7.0
#Downloading boot2docker ISO image...


boot2dockerの動作に必要なイメージファイルがダウンロードされます。

そしてboot2dockerを起動します。

boot2docker up
# Waiting for VM and Docker daemon to start...
# ..........................ooooooooooooooooooooooooo


Dockerにアクセスするための環境変数の設定を促されますので
.bash_profileに設定を追加しましょう。

export DOCKER_HOST=tcp://XXX.XXX.XXX.XXX:2376
export DOCKER_CERT_PATH=/Users/UserName/.boot2docker/certs/boot2docker-vm
export DOCKER_TLS_VERIFY=1


追加したら,source .bash_profileで設定を反映します。

4. Dockerイメージを入手する

dockerコマンドを使ってContainerの素であるイメージを入手します。
試しに最新版のCentOSを入手してみます。

docker pull centos:latest


ダウンロードに成功すると、docker imagesで以下のように表示されるはず。

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos              latest              7322fbe74aa5        2 weeks ago         172.2 MB

5. Dockerコンテナを起動する

ダウンロードしたイメージからコンテナを起動します。

docker run -t -i centos /bin/bash


コンテナが起動され、SSHでアクセスした状態になります。
この状態で必要なミドルウェアをインストールしてお好みの環境を作りましょう。

余談. アンインストール方法

boot2dockerの削除方法も書いておきます。

アンインストールスクリプトが公式で提供されているので
冒頭で書いたサイトからboot2dockerのzip版 or tar版も入手しておきます。


ターミナルからboot2dockerの仮想マシンを削除します。

boot2docker delete


その後、boot2dockerのzip版 or tar版に含まれるuninstall.shを実行しましょう。

あとは、/Applicationsからboot2dockerとVirtualBoxを削除すればOKです。