dockerが正式サポートしたOS Xの環境を構築してみた!

DevOps

dockerlogo-v

軽量コンテナとして注目を浴びているDockerバージョン0.8から正式にOS Xでの動作をサポートしました。

さっそく環境を構築してみたので、簡単な解説をしてみます。

スポンサーリンク

正式サポートの概要

DockerはこれまでもOS Xの上で動かそうと思えば、動かすことはできました。これはOS Xの上でVagrant(実稼働しているのはVirtualBox)などを利用した仮想マシンで通常のUbuntuやCentOSなどのLinuxを立ち上げて、そのLinux環境の中でDockerを稼働させるというものが中心でした。もちろん公式サポートはされていませんでした。

これはDockerそのものがLXC (Linux Containers) と呼ばれるLinuxのOSレベルでの仮想化技術を利用したものなので、Linuxの上でしか利用できなかったからです。よって、バージョン0.8からもOS Xの上でネイティブに動作するわけではありません。

では、どのようにして正式サポートしたのかというと、Dockerが専用の軽量仮想マシンイメージを用意し、OS Xからこの仮想マシンに対してDockerの操作ができるクライアントを用意したことにより、正式サポートとしたようです。用意された軽量仮想マシンは24MBで10秒かからずに起動すると公式のBlogでは説明されています。

DockerをOS Xの上で環境構築する方法

環境構築の方法についてはDocker公式のドキュメントにも存在します。ここではOSX Mavericksでの環境構築をします。

前提として

  • Homebrewがインストールされている
  • VirtualBoxがインストールされている

とします。

Dockerの環境構築は

  • 今回用意された軽量仮想マシンをインストールする(Boot2Docker
  • 仮想マシンのDocker daemonとやりとりをするDockerクライアントをインストールする

以上の2ステップだけです。

インストール

インストールはHomebrewで簡単にできます。(Boxen向けのモジュールもあります

$ brew tap homebrew/binary
$ brew install docker boot2docker

以上で軽量仮想マシンを操作するためのboot2dockerとクライアントになるコマンドであるdockerがインストールされます。

boot2dockerのセットアップ

boot2dokerをインストールしただけでは軽量仮想マシンが起動されていません。軽量仮想マシンをダウンロードして起動する状態にするのに以下のコマンドを実施してください。

$ boot2docker init
[2014-02-08 20:34:15] Creating VM boot2docker-vm
Virtual machine 'boot2docker-vm' is created and registered.
UUID: 2a249c91-a7ce-41d0-8c8e-c622aea16968
Settings file: '/Users/hirocaster/VirtualBox VMs/boot2docker-vm/boot2docker-vm.vbox'
[2014-02-08 20:34:15] Setting VM settings
[2014-02-08 20:34:15] Setting VM networking
[2014-02-08 20:34:15] boot2docker.iso not found.
[2014-02-08 20:34:18] Latest version is v0.5.4, downloading...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   342  100   342    0     0    337      0  0:00:01  0:00:01 --:--:--   337
100 27.0M  100 27.0M    0     0  1700k      0  0:00:16  0:00:16 --:--:-- 3161k
[2014-02-08 20:34:34] Done
[2014-02-08 20:34:34] Setting VM disks
[2014-02-08 20:34:34] Creating 40000 Meg hard drive...
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Disk image created. UUID: 212e5260-deda-4b16-b9d7-b349b467ecb4
Converting from raw image file="format-flag.txt" to file="format-flag.vmdk"...
Creating dynamic image with size 5242880 bytes (5MB)...
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VMDK'. UUID: 212e5260-deda-4b16-b9d7-b349b467ecb4
[2014-02-08 20:34:35] Done.
[2014-02-08 20:34:35] You can now type boot2docker up and wait for the VM to start.

以下のコマンドで、軽量仮想マシンを起動してください

$ boot2docker up
[2014-02-08 20:37:26] Starting boot2docker-vm...
[2014-02-08 20:37:46] Started.

仮想マシンへはboot2docker sshでアクセスすることができます。

boot2docker ssh
Warning: Permanently added '[localhost]:2022' (RSA) to the list of known hosts.
docker@localhost's password:
                        ##        .
                  ## ## ##       ==
               ## ## ## ##      ===
           /""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
           \______ o          __/
             \    \        __/
              \____\______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
boot2docker: 0.5.4
docker@boot2docker:~$ exit
Connection to localhost closed.

クジラ可愛いですね!今は特に操作することはないのでexitして抜けておきます。

dockerコマンドの設定

dockerコマンドは環境変数であるDOCKER_HOSTの値を見てリモートのDocker daemonが稼働しているホストを自動的に判断します。環境変数を自分の稼働しているOS Xを指定するために以下のコマンドを実行します。

export DOCKER_HOST=tcp://

これで、自分の手元のマシンを参照するようになります。dockerコマンドが正常に稼働していれば以下のような表示となるはずです。

$ docker version
Client version: 0.8.0
Go version (client): go1.2
Git commit (client): cc3a8c8
Server version: 0.8.0
Git commit (server): cc3a8c8
Go version (server): go1.2

こんなところでもGoが利用されているんですね。これでDockerの環境が構築できました。

動作確認

Ubuntuの動作を確認してみます。

$ docker pull ubuntu
Pulling repository ubuntu
9cd978db300e: Download complete
eb601b8965b8: Download complete
5ac751e8d623: Download complete
9cc9ea5ea540: Download complete
9f676bd305a4: Download complete
511136ea3c5a: Download complete
7a4f87241845: Download complete
f323cf34fd77: Download complete
6170bb7b0ad1: Download complete
1c7f181e78b9: Download complete
321f7f4200f4: Download complete

コンテナを起動します。

$ docker run -i -t ubuntu:12.04 /bin/bash
root@d7e5a672de30:/#

無事に起動することができました!Mac単体でも快適にDockerを利用する事ができそうです。

余談:Dockerがすぐに利用できるディストリビューション「CoreOS」

Dockerを利用する人向けの軽量LinuxディストリビューションとしてCoreOSというのも存在します。あまったマシンにDockerで環境をいくつも使い捨てにしたいのであれば、ホストOSとして採用してみてはいかがでしょうか。

タイトルとURLをコピーしました