TechLunch

The free lunch is over.

コンテナとVMの関係

Dockerブログに、Are Containers Replacing Virtual Machines?という記事がポストされました。

記事ではVMとコンテナの関係や違いについて述べられています。本記事では一部抜粋して紹介します。

Point #1: Containers Are More Agile than VMs

https://i2.wp.com/blog.docker.com/wp-content/uploads/Blog.-Are-containers-..VM-Image-1-1024x435.png?ssl=1

左側がDockerを利用してコンテナをデプロイする時のアーキテクチャになります。コンテナ化されたアプリケーションはホストOSを共有していますので、アプリケーションの起動時間しかかかりません。一方、右側の図の通りVMごとにアプリケーションをデプロイする場合は、OSから起動するため多少時間がかかります。

また、一般的にアプリケーションは一つのDockerイメージとして作成し、そのイメージを元に各環境でDockerコンテナを起動します。そのため、自分のマシンでは動いたという問題が起こりにくくなります。*1

Point #3: Integrate Containers with Your Existing IT Processes

https://i2.wp.com/blog.docker.com/wp-content/uploads/Are-containers-..-vms-image-2-1024x759.png?ssl=1

ほとんどの企業はエンタープライズ用途に必須な監視、バックアップ、プロセス自動化といったツールを含んだVM環境を備えています。コンテナは図のように、VM上でも問題なく動かすことができるので、既存の資産を有効活用しつつ徐々にアプリケーションをコンテナ化していくといったことができます。

また、コンテナとVMの両方を管理するという点では、KubeVirtが役に立つかもしれません。

結局のところ、コンテナとVMは競合するものではなく共存するものなので、統合を楽に行うツールなどが今後出てくるかもしれません。

*1:実行する環境ごとに環境情報が異なるので、実際には環境依存で動かない場合もあります。