コンテナとVMの関係
Dockerブログに、Are Containers Replacing Virtual Machines?という記事がポストされました。
記事ではVMとコンテナの関係や違いについて述べられています。本記事では一部抜粋して紹介します。
Point #1: Containers Are More Agile than VMs
左側がDockerを利用してコンテナをデプロイする時のアーキテクチャになります。コンテナ化されたアプリケーションはホストOSを共有していますので、アプリケーションの起動時間しかかかりません。一方、右側の図の通りVMごとにアプリケーションをデプロイする場合は、OSから起動するため多少時間がかかります。
また、一般的にアプリケーションは一つのDockerイメージとして作成し、そのイメージを元に各環境でDockerコンテナを起動します。そのため、自分のマシンでは動いたという問題が起こりにくくなります。*1
Point #3: Integrate Containers with Your Existing IT Processes
ほとんどの企業はエンタープライズ用途に必須な監視、バックアップ、プロセス自動化といったツールを含んだVM環境を備えています。コンテナは図のように、VM上でも問題なく動かすことができるので、既存の資産を有効活用しつつ徐々にアプリケーションをコンテナ化していくといったことができます。
また、コンテナとVMの両方を管理するという点では、KubeVirtが役に立つかもしれません。
結局のところ、コンテナとVMは競合するものではなく共存するものなので、統合を楽に行うツールなどが今後出てくるかもしれません。
*1:実行する環境ごとに環境情報が異なるので、実際には環境依存で動かない場合もあります。