LoginSignup
0
0

More than 1 year has passed since last update.

Dockerとは?

Posted at

[Docker]の概念。

Dockerとは、Go言語で作成されたリナックスコンテナ基盤のオープンソース仮想化プラットフォームだ。
image.png

仮想化を使う理由は?

向上したコンピュータの性能をより効率的に使うために仮想化技術が多く登場した。
サーバー管理者の立場では、CPU使用率が10%台にしかならない活用度が低いサーバーのリソースの無駄にならざるを得ない。
だからといって、全てのサービスを一つのサーバーの中に入れると、安定性に問題が生じかねない。
そこで安定性を高め、リソースも最大限に活用できる方法で現れたのがサーバー仮想化である。
皆さんが知っている代表的な仮想化プラットフォームとしてVMがあります。

コンテナとは?

image.png
コンテナは、仮想化技術の一つとして、代表的にLXC(Linux Container)がある。 従来OS を仮想化させていたものと異なり、コンテナはOS レベルの仮想化でプロセスを隔離して動作する方式で行われる。
一サーバの複数のOSを仮想化して使用するのと、コンテナ方式でプロセスを隔離して動作するのとでは、どのような違いがあるのか?

VM仮想化プラットフォームvsDocker仮想化プラットフォーム

既存の私たちに慣れたVMの場合は、HostOSの上に仮想化させるためのHypervisorエンジン、そしてその上にGuestOSをのせて使う。
これは仮想化されたハードウェアの上にOS が乗っかる形でほぼ完璧にHost と分離されると考えてよい。
反面、コンテナ基盤の仮想化はDockerエンジンの上にApplication実行に必要なバイナリだけが上がるようになる。
OS仮想化を見ると、Host OSと完全に分離されるメリットはありますが、OSの上にOSを乗せるために重くて遅くならざるを得ませんが、コンテナ基盤の仮想化は、Host OSそしてDockerエンジンの上ですぐに動作し、Hostのカーネルを共有します。
カーネルを共有すればio処理が簡単になり性能の効率を高めることができる。
コンテナを使用することは、仮想マシンを生成するのではなく、HostOS が使用するリソースを分離して、様々な環境を作れるようにすることである。

コンテナ基盤はOS仮想化より優れていると言われているが、必ずしもそうではない。

OS 仮想化はコンテナベースの仮想化よりも高い隔離レベルをサポートしている。
これはセキュリティ的な面でさらに有利だ。
またOS 仮想化のカーネルを共有しないメリットもある。
カーネルを共有しないため、マルチOSが可能だ。
カーネルを共有しないためにマルチOSが不可能であることは、Linux 上にWindow を載せることができないという短所がある。
にもかかわらず、なぜDockerを使う理由は性能向上、優れた移植性、簡単にScale Outができる柔軟性だ。

0
0
0

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
0
0