458
522

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Docker入門 #1 【Dockerとは】

Last updated at Posted at 2017-10-11

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 コマンドチートシート

458
522
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
458
522

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?