docker
creatus
More than 1 year has passed since last update.

dockerの機能、利点についてまとめます。


dockerが使用している技術

dockerはコンテナによる仮想化方式を提供しているが、それらはdockerがフルスクラッチで作ったものではない。(つまり、Linuxの機能をdockerが使っている。)


代表的な機能


  • LXC (Linux Container)

  • namespaces (プロセスの分離)

  • cgroups (コンテナのリソース制御)

  • AUFS (コンテナイメージの差分管理)

これらの機能はLinuxで提供されるものを使用するため、それを提供するKernelのバージョンに依存する。


dockerのメリット


  • ゲストOSはホストのKernelを直接使用するためオーバヘッドが小さく高速

  • ゲストOSがそれぞれにKernelを持たないため、メモリやディスクの消費量を節約できる。

  • 必要とするリソースが少ないため、多くのゲストOSを起動できる。

  • Kernelを新たに起動する必要がないため、ゲストOSの起動が早い。

また、dockerはコンテナを起動する際に、各コンテナごとのディスク上にデータを持つのではなく、「1つのイメージから複数のコンテナを作る」という方式でゲストを起動する。

これはイメージから起動するコンテナはいつも同じことが保証されている。

そのため、以下の利点もある。


  • コンテナのイメージ(雛形)からコンテナ(実態)を作るため、同一構成のOSを簡単に複数作成できる。

  • テストをパスしたイメージは本番環境でもすぐに使用できる。(開発とデプロイのサイクルが早い)


ここまでのまとめ


  • 基本的な機能はLinuxにもともと搭載されているものを使うから早い

  • 環境そのものを簡単に複製、配布できるので環境構築の手間が省ける(たくさんの人たちが環境構築に苦しめられているはずです。)

  • イメージとしてたくさんのOS(Linuxディストリビューション)が簡単に使えるので、色々試せる

次回は実際にdockerをインストールして動かしてみます。