かばちんのエンジニアブログ

日々の経験の中で培った内容を備忘録も兼ねて記録していくブログです。少しでも誰かの役に立つために頑張って続けていけたらなと思います。

Mac + VirtualBox + Ubuntu 14.04 + Docker による開発環境構築

ビットコイン取引高日本一の仮想通貨取引所 coincheck bitcoin

f:id:kabatin:20160222190902p:plain

仕事でDockerを利用して開発環境を作る機会が頂けましたので環境構築の手順の共有と備忘録として記事を書いていきたいと思います。

各ソフトウェアのバージョン情報など

MacOSX 10.11.1
VirtualBox 5.0.14
Ubuntu 14.04 LTS
・Docker 1.10


VirtualBoxをインストール

VirtualBoxはこちらから最新版をダウンロードできます。
https://www.virtualbox.org/

こちらは特に難しいところはないので、画面に従ってインストールしてください。

f:id:kabatin:20160222153015p:plain


VirtualBoxUbuntuをインストール

VirtualBoxのインストールが終わったら次は実際にUbuntuをインストールします。
まずはUbuntuのイメージファイルが必要なので下記のサイトからダウンロードします。
http://www.ubuntulinux.jp/download/ja-remix

イメージファイルがダウンロードできたら、VirtualBoxの左上にある「新規(N)」ボタンを押して
Ubuntu用のバーチャル環境を作成していきましょう!


まずはバーチャル環境に名前を付けます。それ以外の項目はそのままで良いでしょう。
f:id:kabatin:20160222153025p:plain

次に、メモリサイズの指定を行います。
僕は2GBを指定してみました。マシンのメモリ容量と相談して適当に設定しましょう。
f:id:kabatin:20160222153027p:plain

次はハードディスクの設定項目です。
仮想ハードディスクを設定するかどうかですが、初回であれば何もないはずですので「仮想ハードディスクを作成する(C)」を選択しましょう。
f:id:kabatin:20160222153029p:plain

ハードディスクのファイルタイプは「VDI (VirtualBox Disk Image)」を選択します。
f:id:kabatin:20160222153031p:plain

物理ハードディスクの設定は今回は「可変サイズ(D)」にしました。
固定サイズにすると、作成時に少し時間がかかる代わりに処理速度が上がるようですが、ディスク容量の節約のために今回は可変サイズで作成します。
f:id:kabatin:20160222153034p:plain

最後にディスク容量を指定して作成します。
Ubuntuをインストールするには最低7GBの容量が必要なため、少し余裕をもたせて8GBとしました。
f:id:kabatin:20160222153036p:plain

これで無事にUbuntu用のバーチャル環境の作成が完了です!
f:id:kabatin:20160222154309p:plain


それでは「起動(T)」ボタンを押してUbuntuを起動してみましょう!
するとこんな画面が表示されるかと思います。
ここで先ほどダウンロードしておいたUbuntuのイメージファイルを選択して「Start」ボタンを押します。
f:id:kabatin:20160222154558p:plain

そうすると起動時にこのイメージファイルがロードされてUbuntuのインストール画面が表示されます。
右の「Ubuntu をインストール」ボタンを押してUbuntuをインストールしていきましょう。
f:id:kabatin:20160222155045p:plain

・必要最低限のHDD空き容量があること
・インターネットに接続されていること
この2つがクリアできていればインストールが可能です。
(たぶん大丈夫になってるはず)
f:id:kabatin:20160222155049p:plain

警告と書いてあって若干怖いですが、「ディスクを削除してUbuntuをインストール」を選択します。
初回インストールなので特になくなって困るものはありませんので大丈夫です。
f:id:kabatin:20160222155053p:plain

住んでいる地域を選択します。
f:id:kabatin:20160222155058p:plain

キーボード設定ですが、特に指定がなければそのまま続けます。
f:id:kabatin:20160222155104p:plain

ここまで設定が終わるとOSのインストールが始まりますのでしばらく待ちます。(約20分程度)
f:id:kabatin:20160222161447p:plain

インストールが終わると再起動が求められます。
再起動した結果が以下の画面になります。
無事にUbuntuをインストールすることができました!

f:id:kabatin:20160222161627p:plain


ご覧の通りインストール完了後の初期状態だと解像度がだいぶ小さいです…。
作業効率化のためにまずは解像度の設定を行いましょう。
初期状態だと640x480しか選択することができません。
f:id:kabatin:20160222154307p:plain


Ubuntuが表示されているウィンドウのウィンドウメニューから
「Devices」→「Insert Guest Additionas CD image...」を選択します。
すると以下のようなポップアップが表示されるので「実行する」ボタンを押します。
f:id:kabatin:20160222161454p:plain

パスワードが求められるのでUbuntuのインストール時に設定したパスワードを入力して「認証する」ボタンを押します。
f:id:kabatin:20160222161837p:plain

コマンドラインが起動して何やらインストールが始まります。
画面に「Press Return to close this window...」と表示されたら完了です。
リターンキーを押してウィンドウを閉じましょう。
f:id:kabatin:20160222161925p:plain

その後、バーチャル環境を再起動すると640x480以外の解像度も選べるようになっているはずですので、環境に合わせて好きなものを設定しましょう。
f:id:kabatin:20160222162307p:plain


UbuntuへDockerをインストール

さて、ようやくUbuntuがインストールできたところで次は本題のDockerをインストールしていきたいと思います!

インストールと聞くと apt-getyum が思い浮かぶかと思いますが、apt-getを利用すると少し古いバージョンがインストールされるようです。
今回は wget で最新をインストールしていきたいと思います。

$ wget -qO- https://get.docker.com/ | sh

インストールが終わりました。
f:id:kabatin:20160222163106p:plain

最後にこんなことが書いてあります。

If you world like to use Docker as a non-root user, you should now consider
adding your user to the "docker" group with something like:

  sudo usermod -aG docker kabayama

Remember that you will have to log out and back in for this to take effect!

ようするに、ルートユーザ以外で実行したい場合はこのコマンドを実行しておいてね!ってことみたいです。

それでは Docker コマンドでバージョン確認をしてみましょう。

$ docker version

バージョン情報が表示されました!
f:id:kabatin:20160222163806p:plain

さっそく Docker の Hello World を実行してみたいと思います!
あれ・・・。エラーになってしまいました。
f:id:kabatin:20160222170806p:plain

この後あちこちググりながら1時間ほどいろいろ試したのですが、結局OSを再起動したら sudo 付けずに一般ユーザで実行できるようになりました。
環境構築手順としてはそれほど多くはありませんが、実際にやってみるといろいろハマるところがあり2〜3時間を要してしまいました。

おそらくこのコマンドが有効化されるために、OSの再起動が必要なようですね。

sudo usermod -aG docker kabayama

再起動しても解決されない場合は、Dockerサービスが上がっていない可能性があるので以下のコマンドで解決するかもしれません。

sudo service docker start


今回はかなり手こずってしまいましたが、次回からはすんなり構築できるようにしっかり覚えたいと思います。
同じような問題でハマっている方、これからDockerを使ってみようという方の少しでも参考になれば嬉しいです。