Help us understand the problem. What is going on with this article?

Docker入門 #1 【Dockerとは】

More than 1 year has passed since last update.

Dockerとは

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

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

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

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


で、そもそもVMでの開発とどう変わるか

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を利用できませんでした

Docker for Mac / Windowsの登場

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)

環境構築も公式サイトからアプリをダウンロード&インストールするだけになったので非常に簡単です


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

なぜDocker?

普段の開発においては以下のメリットデメリットがある

メリット
  • OS依存がなく、導入が容易
  • 案件ごとに異なる環境を構築できるため、特定のPC依存を回避
  • ミドルウェア導入や新インフラ環境のテストが各自のPCで可能
  • 言語やツールのバージョンアップテストが容易
  • チームメンバー全員が各自のPCでデバッグ可能になる
デメリット
  • 学習コスト

さいごに

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

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

リンク

Docker入門 #2 【Dockerチュートリアル】
Docker入門 #3 【WordPress環境構築】
Docker入門 #4 【CodeIgniter環境構築】
Docker入門 #5 【Ruby on Rails5環境構築】
Docker コマンドチートシート

wMETAw
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした