← メディア一覧

仮想マシン_vs_Docker:二つの家の物語

5分14秒 | Dockerコンテナ仮想環境

基本情報技術者試験の頻出テーマを解説した動画コンテンツです。

トランスクリプト(字幕テキスト)

どうも。今日のテーマは開発者なら一度は「うーん」って悩むこの問題、仮想マシンDocker。これです。 昔はね、開発環境を作るぞってなったら、もう一日がかりでしたよね。それが今や Docker を使えば、ホント、スマホみたいに軽快に起動できちゃう。 この二つ、一体何がそんなに違うのか、そして、あなたのプロジェクトにはどっちがベストなのか、その核心にぐっと迫っていきましょう。 さあ、開発環境を整えるぞって時に、多くの人がぶつかるこの問い。仮想マシンDocker、結局、本当の違いってなんなの? この時間でそのモヤモヤをスッキリさせちゃいましょう。まずは昔ながらのやり方、仮想マシンから見ていきましょうか。 これ例えるなら、そうですね、真っさらな土地に基礎から家を一軒丸ごと建てる、そんなイメージです。 まず、家の土台になるもの。これが物理的なハードウェアですね。インフラストラクチャです。 まあサーバーとか、皆さんが使ってる PC 本体のこと。ここがすべての始まりです。 で、その土台の上にですね、今度はハイパーバイザーっていう層が乗っかります。 これが仮想化の肝になる技術で、物理的なリソースをうまく分割して、仮想的なマシンを作り出す、そういう役割なんですね。 そして、ここが一番のポイントなんですけど、このめちゃくちゃ分厚い層、ゲスト OS です。 これアプリケーションごとに、Windows とか Linux とか、OS を丸ごと一つインストールしちゃうんですよ。 いやこれが、仮想マシンが重くて起動に時間がかかる最大の理由なんです。まさに、家の中に、もう一個家を建てるみたいな感じですよね。 こんな感じでいくつもの層がしっかり積み重なって、やっとその一番てっぺんに、皆さんのアプリケーションが乗っかるわけです。 ビルを登っていくみたいに、本当に重厚な作りですよね。さて、じゃあ今度は、現代的なやり方、Docker を見ていきましょう。 これがさっきと全然違う絵になるんですよ。家を建てるんじゃなくて、もっと身軽に、家具付きの部屋をポンと借りる、そんな感じです。 Docker ってアプローチが根本から違うんですよね。まず、ホスト OS っていう大きな家がすでに存在していて、 その心臓部であるカーネルみんなで共有するんです。で、自分の部屋、つまりコンテナには、最低限の荷物だけを持ち込む。 だからまるで薄いケースが乗るみたいに、ものすごく軽くて動きも早いわけです。そうなんです、もうお気づきの方もいるかもしれませんね。 この二つの決定的な違い、それは OS がどこにあるのかってことなんです。ここを理解するのが、まさに「なるほど」ってなる瞬間ですよ。 このスライドがその違いをバシッと示してくれてますよね。左の仮想マシンは、もう完全に独立した家。 防音ばっちりの個室です。一方、右の Docker はシェアハウスみたいなもんですね。 リビングっていう OS を薄いパーティションで区切って、個室を使ってる感じ。効率的に空間を共有してるわけです。 これ本当に大事なポイントなのでもう一回言います。仮想マシンは中に完全なゲスト OS を持っている。 それに対して Docker コンテナは、ホストの OS を共有している。つまり仮想マシンハードウェアそのものを仮想的に作り出すのに対して、 コンテナOS のレベルで仮想化してるんです。考え方のスタート地点が全く違うんですよね。 じゃあ、この技術的な違いが僕たちの開発現場で一体どんな良いことに繋がるのか。軽量 & 高速のメリットを見ていきましょう。 このアーキテクチャの違いがこれだけの差を生むわけです。起動速度、見てください。仮想マシンだと数分かかりますよね。 それが Docker コンテナなら、ほんの数秒、一瞬ですリソース使用量も、ギガ単位でメモリを食う VM に対して、Docker本当に最小限。 まさに軽くて速い、これに尽きますね。で、この軽さと速さが今の開発スタイルにめちゃくちゃフィットするんですよ。 どこでも同じように動くっていうポータビリティがあるから、「私の PC では動いたのに」みたいな問題がなくなる。 で、インスタンスを作るのも壊すのも一瞬だから、サーバーを増やすみたいなスケーラビリティも簡単。 そして、この手軽さが CI/CD っていう自動化の仕組みともうものすごく相性が良いんです。 さあ、まとめるとこの問いに行き着きます。あなたの次のプロジェクトでは家を建てますか?それとも部屋を借りますか? もし OS レベルで分離されたセキュリティが必要なプロジェクトなら、VM家を建てるのが良いかもしれません。 でも、もっと早く、軽く、柔軟に開発を進めたいなら、Docker部屋を借りるほうが断然スマートです。どちらがしっくりくるでしょうか。

このコンテンツは Web society で視聴・学習できます。