2016年 10月 18日

Dockerとは

Dockerとは

旧dotcloud社(現docker社)が開発したLXCユーティリティ。

LXCとはOSの仮想化技術の1つで、VMに比べて軽量であることが特徴(コンテナと呼ばれる)。
LXCはLinuxOS上でしか動作しない。

つまりどういうことかというと

Dockerは軽量な仮想マシンを簡単に構築することができ、インフラを含めたアプリ全体をまるまる、
コンテナという箱に閉じ込めることができる。また、コンテナの配布やバージョン管理も可能


で、そもそも今までVagrantなどで環境構築してきたが、どう変わるのか

DockerとVagrantの違い

Vagrant (+ VirtualBox)

仮想マシンを動かす仮想化ソフトのラッパーツール


VirtualBoxの構成をVagrantfileというテキストに記述してVagrantに任せることで、ネットワークドライバの設定などを意識すること無く、ホスト環境に依存しない形で整備される


【特徴】
・Linux以外のOSの環境が構築できるため、コンテナ型と比べて自由度が高い
・OSのバージョンの違い、仮想環境ツールの違い、仮想環境ツールの設定の違いなどで構築に手間がかかる
・VagrantとVirtualBoxのバージョンの相性によってバグがある
・仮想環境はホストOS型と呼ばれ、ゲストOSがハードウェアにアクセスするにはホストOSを経由しなければならないため、オーバーヘッドが大きい

Docker

OS・ミドルウェア・ファイルシステム全体をイメージという単位で取り扱い、まるごとやりとり出来るツール


【特徴】
・仮想環境はコンテナ型と呼ばれるもので、ホストOSを直接アクセスするためオーバーヘッドがほぼゼロ
・環境構築が用意でVirtual Boxも不要
・コンテナは移植性(ポータビリティ)が高く、Dockerさえインストールされていれば、全く同じ環境でアプリを動かせる
・ホストOSからはコンテナは1プロセスとして認識される


Docker環境構築の歴史

Dockerは多数の専用ツールで動作するため、様々なツールが登場した反面、
使われなったツールも多く、死語も多いので解説していきます


従来、Docker動作させるための必要なツールをまとめた、 Docker Toolboxが提供されていました


【Docker Toolbox】
2015年8月12日 〜 2016年8月1日
Docker1.8.0と同時にリリースされた、Dockerまわりの環境を全部入れたインストーラ

・Docker クライアント
・Docker Machine   (Docker入りVM操作ツール)
・Docker Compose   (Docker複数コンテナ連携管理)
・Docker Kitematic (Dockerコンテナ用GUI)
・VirtualBox

DockerはVirtual Box環境が必須であり、
Docker MachineというVirtual Boxを操作するツールで環境設定を行わないとDockerを利用できませんでした


しかし


2016年8月1日〜 各OS純正の仮想環境を利用するDocker for Mac / Windowsが正式版としてリリースされ、Virtual Boxと環境設定が不要になり、各OSネイティブサポートの仮想環境(ハイパーバイザ)で動作するため、さらに高速になりました


OS ネイティブ仮想環境(ハイパーバイザ
Mac xhyve(Yosemite v10.10.3 以降)
Windows Hyper-V (Windows10 x64 Pro,Education,Enterprise)


環境構築も公式サイトからアプリをダウンロード&インストールするだけになったので非常に簡単です
( 2016年10月現在、最新バージョンは1.12.1



ちなみに、Docker Toolboxの登場まで
Virtual BoxとDockerを連携させるにはboot2dockerというツールが使われてきましたが
Docker Machineの登場でboot2dockerは公式に非推奨となりました



Dockerのメリットデメリット

メリットデメリットは次の通り


【メリット】
・案件ごとに異なる環境を構築できるため、特定のPC依存を回避
・ミドルウェア導入や新インフラ環境のテストが各自のPCで可能
・OS依存がなく、導入が容易
・プロジェクトメンバー全員が各自のPCでデバッグ可能になる(GUIで簡単セットアップ)
・各自のPCで期間周りのデバッグが可能(Dockerコンテナのシステム時間を変更する)

【デメリット】
・学習コスト
・ソースコードやDBは手元で完全に本番環境と同じに出来るものの、インフラ環境が開発と本番環境で違う問題は解消されない
 → 本番をDockerで運用することも可能だが、経験不足により思わぬ落とし穴にはまりそう
 

さいごに

調査の結果、学習コストはあるものの
環境構築の手軽さ、Docker界隈の盛り上がりを考えると、今がDockerの学習を始める最高のタイミングだと思いました


早速、公式サイトからDocker for Mac / Windowsをダウンロードしてインストールしてみましょう!

Yoshida e070c695df5d4bbe8e6b800136356dbfb59e78836e5658e2b5f4e4e33df4a66d
Ryo

グルメ旅とお酒が大好きなプログラマー
大阪界隈の勉強会運営もやってます。
趣味はボルダリング

follow us in feedly このエントリーをはてなブックマークに追加