仮想化技術とコンテナ技術について (Dokcer)
初めまして、Junior Back-end Developer、SIMOKITAZAWAです。
色々と足りないところがあるかと思いますがよろしくお願い致します。
私がZENNを始めた理由は、
- 勉強したことをまとめたい
- 勉強の内容を共有して一緒に成長したい
- 間違って理解している部分について先輩たちに教えてもらいたい
このような理由で始めることになりました。
たくさんの教えをお願いします。
Dokcerを深く理解することより、最初は使う理由となんで作られたか勉強します。
Dokcerとは
Dokcerはコンテナ基盤仮想化技術です。
ここでコンテナと仮想化という言葉はどんな意味か勉強しましょう。
仮想化とは
仮想化はどんな技術か話す前に仮想化というものがなんで必要か確認しましょう。
ここに私たちが作ったショッピングモールサイトがあります。このサイトのサーバを500万で購入したとしましょう。500万でサーバを購入しましたが、実際にこのサイト使ってユーザーは平均1000人くらいです。そうするとサーバは高い値段で購入しましたが、ユーザーの数が少ないのでサーバを維持するのが難しくなります。
私たちはユーザー数を上げるために、ショッピングモールとともにもう一個のプロジェクトを制作し追加しました。追加した結果ショッピングモールと新しく作ったプロジェクトが技術的に合わなくて、様々な問題が起こりました。そうすると、私たちがここでショッピングモールを選択し新しいプロジェクトを諦めるか、新しいプロジェクトを選択してショッピングモールを諦めるかこの2つの選択すしなければなりません。
この問題を解決するために出た技術が仮想化です。
仮想化技術とは、一つのサーバを分けて性能を分散し、分散されたサーバたちをそれぞれ違うサービスを行うことができるようにする技術です。そうするとユーザーの数が多いサービスは多くの資源を渡して、そうではないサービスには資源少なく渡すことができます。
サーバ仮想化
そうすると、仮想化の種類であるサーバ仮想化について説明します。
サーバ仮想化とは、一つの物理的サーバHostで多くのサーバのOSをGuestで実行するようにしてくれるSoftware Architectureです。
また、このサーバ仮想化を実装してくれる技術がhypervisorです。hypervisorは仮想化の技術を通じて多くのOSを一つのHost OSで生産して使えるようにしてくれます。
hypervisorよって生成され管理されるオペレーティングシステムはGuestオペレーティングシステムと呼ばれ、それぞれのGuestオペレーティングシステムは完全に独立したスペースとシステムリソースを割り当てられて使用します。
hypervisorの役割を見ると、OSたちにリソースを配り、OSたちのkernelを翻訳してハードウェアに伝えてくれます。各種システムのリソースを仮想化し、独立した空間を生成する作業は、hypervisorを必ず経るため、普通のHOSTに比べてパフォーマンス損失があります。また、Guestオペレーティングシステムを使用するためのライブラリやkernelなどをすべて含むため、配布するImageが大きいです。
コンテナ
仮想化にある問題を改善するためにコンテナ技術が出ました。
コンテナではApplicationで必要なライブラリと実行ファイルのみが存在します。そのため、Image容量が仮想マシンに比べて小さく速いです。
コンテナとは、辞書的意味である物体を隔離する空間のことです。
では、技術的意味としてコンテナとは何でしょうか?
それについてはまた載せます。
この記事はここです。
読んでくださってありがとうございました。
Discussion