LoginSignup
6

More than 3 years have passed since last update.

posted at

updated at

【Docker入門①】そもそも『Docker』とは…?

この記事では、《Docker や コンテナ》について、
業務を通して学習した内容をまとめています。

  • 『Docker』とは…?
  • 『Docker』って何が良いの…?
  • 『Docker』のアーキテクチャ(構成)

こういった疑問についてまとめています。

※本記事は、自分で学習したことのまとめ用として書いています。
尚、解説で誤った点があれば、スローして頂ければ喜んでキャッチしますのでお願い致します。

『Docker』とは…?

docker.jpg

『Docker』とは・・・

Linux上でコンテナを作成・管理・実行するためのプラットフォームです。

Docker社(旧dotCloud社)によって、2013年3月に初版がリリースされ、現在ではインフラ関係やDevOps界隈で注目されている技術の一つです。

Windowでも・・・
Windows Server 2016 からはWindowsコンテナが利用できるようになりました。
※Windowsコンテナは、Windows上でのみ実行可能です

『Docker』を利用すると何がメリットなの…?

『Docker』はLinuxのコンテナ技術を使ったもので、よく『仮想マシン』と比較されます。

なので、まずは・・・

『仮想マシン』と『コンテナ』の違い

について簡単に見ていきましょう。

『仮想マシン』と『コンテナ』について

virtual_machine_and_container.png

『仮想マシン』は・・・

ホストOS上で『VirtualBox』や『VMware』などの仮想化ソフトウェアを利用して仮想マシンを作成し、その仮想マシンのゲストOS上でアプリやミドルウェアを動かします。

【余談】
サーバー仮想化は、利用する仮想化ソフトウェアによって『ホスト型』『ハイパーバイザー型』の2種類の手法に分類され、上記は『ホスト型』に該当します。
『ハイパーバイザー型』についても知りたい方は、ググってみてください。

そのため・・・

起動に時間がかかるというデメリットがあります。
(もちろん、完璧に環境を分離できるというメリットもありますが…)

それに対し、『Docker』は・・・

ホストOSのみの使用でプロセスやユーザなどを隔離することで、ホストOS上にあたかも別のマシンが動いているかのような環境を作ります。

そのため・・・

軽量で、且つ高速に起動・停止することが可能になります。

『Docker』を利用するメリット【5つ紹介】

point-1.jpg

『Docker』では、開発環境の構築(ミドルウェアのインストールや各種環境設定)をコード化して管理します。

そのため・・・

『Docker』を利用することで、以下のようなメリットがあります。

  • コード化して管理することで、
    誰でも、どこでも同じ開発環境が構築できる
  • 構築した開発環境を簡単に配布できる

例えば・・・

"開発環境(Windows上)では正常に動作したけど、Linuxでは動作しなかった"

なんて経験がある方もいるかと思いますが…

このケースの場合、開発工程から『Docker』を利用することで防ぐことができます。

さらには・・・

『開発工程の中で使っていた環境をそのまま本番環境に持っていく』

なんてことも可能なので、差分の発生がなくなり、環境差分によるトラブルも防ぐことができます。

また・・・

作成したDocker イメージは他の開発メンバーにも渡せるので、それを使ってもらうことで…

  • メンバー間での開発環境のバージョンずれ防止
  • 準備時間(開発環境を準備する時間)の短縮

にもつながります。

実際・・・

"資料の不備や手順ミスが原因で、開発環境の準備に丸一日かかってしまった"

なんて経験がある方も多いんではないでしょうか…苦笑

そんなところで、メリットをまとめると下記の5つのようなモノが挙げられます。

  1. 起動が速い
  2. コード化して管理することで、
     誰でも、どこでも同じ開発環境が構築できる
  3. 構築した開発環境を簡単に配布できる
  4. メンバー間での開発環境のバージョンずれ防止
  5. 準備時間(開発環境を準備する時間)を短縮できる

※あくまで一部なので、他にもたくさんあると思います

『Docker』のアーキテクチャ(構成)

shells_script_3.jpg

『Docker』のシステム構成に関してのお話で、要は…

『コンテナをどうやって動かすか』

ってことについてです。

具体的には、『Docker』は下記の4つで構成され、サービスを提供しています。

  1. Docker デーモン
  2. Docker クライアント
  3. Docker イメージ
  4. Docker コンテナ

それでは、ひとつずつ見ていきましょう。

①:Docker デーモン

docker_daemon.png

Docker デーモンは・・・

コンテナの管理・実行を行います。

Docker デーモンはイメージからコンテナを作成したり、実行したりするだけの存在なので・・・

実際は、Docker デーモンに対して指示を出すシステムが必要です。

それが、お次に紹介する『Docker クライアント』です。

②:Docker クライアント

docker_client.png

Docker クライアントは・・・

『Docker』を操作するためのアプリケーションです。

管理者からのコマンドを受け付けたら、その先にあるDocker デーモンへ指示を飛ばし、それによってコンテナが動いたり止まったりする訳です。

③:Docker イメージ

docker_image.png

Docker イメージは・・・

コンテナの元になるひな形で、Docker レジストリに保管されます。

Docker レジストリとしては、Docker Hubと呼ばれるオンラインサービスが提供されており、そこではイメージの共有やダウンロードが可能です。

④:Docker コンテナ

docker_container.png

Docker コンテナは・・・

Docker イメージを元にして実行されたプロセスです。

各コンテナは分離されているので、独立したホストの同じように扱うことが可能です。

まとめ・感想

surfing-1.jpg

『Docker』に関しても『業務のなかでもやってみたい!』と思ってますが、なかなかチャンスがなさそう…。
(待っててもチャンス来ないので、行動するしかないですね笑)

今後は…

『Dockernのセットアップやコンテナの起動方法』

についてもまとめる予定です。

<次のお話>
【Docker入門②】『Docker』のセットアップと基本操作

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
What you can do with signing up
6