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

初めてDockerについて調べたのでMacで例えてみる

More than 3 years have passed since last update.

VagrantChefと触ってきたので、Docker で開発環境を構築して見たいと思います。
この記事では実際に環境を構築する前に Docker について調べたことをまとめています。

Docker について

Docker とは?

私が最初に仕入れた Docker(ドッカー)の特徴は下記のようなものです。

  • Linux上でしか動作しない
  • Go で書かれている
  • アプリケーションとミドルウェアとどまらず、OS やネットワークまで含めたインフラ環境をまとめてコンテナとして管理できる
  • 一度イメージを作ってしまえば、Docker がインストールされている環境であれば、どこでも同じ状態を復元できる

うーん、なんかわかったようなわからないような、、、
上の情報だけだと、Vagratn + Chef の上位版(もっとすごいやつ)みたいな印象を持ちました。

コンテナとは?

Docker がコンテナでインフラ環境を管理しているとのことですが、コンテナとはいったい何なのでしょうか。
コンテナとは仮想環境をつくる際の 仮想化の方法のひとつ で、2000年ごろからある古い技術です。

仮想化技術

代表的は仮想化技術には以下のものがあります。

1. ホスト型仮想化
ホスト OS の上に仮想化ソフトウェアをインストールし仮想環境を構築、仮想環境にゲスト OS をインストールする方法です。VirtualBox がホスト型の仮想化ソフトウェアです。
手軽に構築できる反面、同じマシンでOSが複数稼働するため、サーバリソースを無駄に消費します。

2. コンテナ型仮想化
ホストOS上にコンテナ管理ソフトウェアをインストールし、その上でコンテナを動作させる方法です。ゲストOSはインストールされず、ホストOSを論理的に分割して利用します。
Docker はこのコンテナ型仮想化を採用しています。
※Docker は Linux 上でした動かないため、Mac で Docker を使うにはゲストOS(Linux)が必要になります

3. ハイパーバイザー型仮想化
ハードウェア上に直接、ハイパーバイザーと呼ばれる仮想化ソフトウェアをインストールする方法です。このハイパーバイザーが複数の仮想環境を制御します。ホストOSがないマシンで様々なゲストOSが複数稼働している状態ですね。
AWSのEC2 などがハイパーバイザー型仮想化になります。

というわけで Docker は VirtualBox + Vagrant + Chef の構成とは、仮想化の方法が違うということがわかりました。

イメージとは?

Docker について理解するために、コンテナの話だけではなく Dockerイメージ について覚える必要があります。
Docker イメージはPCのバックアップを取る際などに利用する、ディスクイメージと似たようなものだと考えて良さそうです。つまり、ある時点のサーバの状態をそのまま保存しておけるものです。
しかも Docker だとその状態をコードで管理することもできるとか。

Vagrant + Chef では vagrant up 時に Vagratnfile とレシピに記述された状態にサーバを収束させるようインストール等が行われますが、Docker ではインストールするのではなく Docker イメージの状態がそのまま復元されるようです。

なぜ Docker が話題なのか

コンテナ型仮想化は古くからある技術ですが、クラウドシステムの普及によって需要が高まったのですね。
サーバを簡単に構築・破棄できるようになったため、構築作業の自動化が加速しました。

Vagrant のような仮想環境と OS インストールを自動化するツール、Chef のようなミドルウェアのインストールや設定を自動化するツール、そして複数のサーバの自動化を管理するツール(Capistrano など)が開発されました。
Docker はこれらのすべてをカバーしているため、話題になっているようです。このカバーしている範囲の広さから最初に「上位版?」と感じたのだと思います。

Docker の危険性

ただ、良いことばかりではないようです。

Dockerの諸問題とRocket登場の経緯
http://deeeet.com/writing/2015/02/17/docker-bad-points/

こちらの記事には Docker の危険性がいろいろと挙げられています。
この辺を改善できないと、後発のサービスに一気に取って代わられる可能性がありますね。

おわりに:Docker を Mac で例えると

Vagrant が OS X のインストーラー、Chef が AppStore だとして、Docker は Time Machine ですね。

Mac の任意の状態をバックアップとして取得しておけるし、新しい Mac を買ってきたら Time Machine から復元して古い Mac と全く同じ状態を再現できる。そんなツールだと理解しました。

次の記事では、実際にインストールして使ってみます。

Why do not you register as a user and use Qiita more conveniently?
  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
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