BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【コンテナおじさん】【仮想化】【コンテナ】コンテナ学習第1回

それはまだ私が学生だった頃、当時所属していた研究室ではMacOSを使用していました。そこでとある解析をする時はWindows上でしか使えない解析ツールを使用しており、Mac上でWindows画面を起動して対象のソフトを使っていました。
今思えばあれが私と仮想化・コンテナとの出会いでした。

f:id:bftnagoya:20210107100227p:plain
学生時代に作業していた画面のイメージ


はじめに

こんにちは!BFT名古屋支店の松野です。
今回はタイトルにもある通り、コンテナおじさんを中心にコンテナ技術の学習をしたので、自分が知ったこと、分かったことを自分の言葉でまとめていこうと思います。ひとつの記事には収まらないので複数回に分けて記事にしていきます。
それではよろしくお願いします!

コンテナおじさんとは、BFTがTihkITで連載中のコンテナ入門教室の記事です。

thinkit.co.jp

仮想化ってなあに?

仮想化とはハイパーバイザーと呼ばれるソフトウェア上で単体もしくは複数のOSを仮想的に実行する技術のことをいいます。(ハイパーバイザー型)これにより一つの物理サーバー上に複数の仮想マシンを構築し、仮想的に複数のOSを起動することが出来るようになりました。

f:id:bftnagoya:20210107115906p:plain
ハイパーバイザー型仮想化イメージ

仮想化を使うとどんな良いことがあるの?

仮想化技術を使用する一番の目的はCPUやメモリといったリソースの有効活用にあります。WindowsOSとLinuxOSが必要になった時に物理サーバーを2台準備するのではなく、1台の物理サーバーを仮想サーバーとして構築し、Windows仮想マシンLinux仮想マシンを構築するといった使い方が出来るようになり、従来よりもリソースの有効活用が可能になりました。

仮想化だと不便なこと。

リソースの有効活用が可能になる仮想化技術ですが、弱点もあります。まず一つは仮想マシンのデータ容量が大きくなってしまうことです。仮想マシンイメージ一つで数GBのファイル容量になってしまうことも珍しくありません。
また、そもそもOSをインストールしなければならなかったり、 OSへのセキュリティパッチの適用が必要になるなど構築・運用面においても手間が掛かってしまいます。

コンテナの登場

そこで現れたのがコンテナ技術です。コンテナは仮想化とは違い、ホストOSとOSカーネルを共有します。つまりコンテナイメージ毎にわざわざOSをインストールしたり管理する必要がありません。これによりコンテナ技術はコンテナイメージの軽量化とあらゆる環境で手軽に実行できる高いポータビリティを実現しました。

f:id:bftnagoya:20210107114008p:plain
コンテナイメージ図

コンテナは万能?

仮想化よりも手軽にあらゆる環境でアプリ実行が可能になるコンテナ技術ですが気を付けることもあります。前述のとおり、コンテナにOSは含まれておらずホストOSとOSカーネルを共有しているため、コンテナ内のアプリが問題なく使用できるかどうかはホストOSカーネルの互換性に依存します。
私が調べた範囲だとそこまで大きな問題になることはないようですが、例えば新しいバージョンのOSカーネルで作成されたコンテナを古いバージョンのOSカーネルで実行するといった場合には注意が必要なようです。

おわりに

今回はコンテナおじさんの第1回と第2回を読んで学習したことを中心にまとめました。初めて仮想化を知った時はITってすごいなと感じたことを思い出しました。
今後はコンテナ技術のメカニズムの詳細とDockerをはじめとしたコンテナエンジンのことを学習していく予定です!