VMware Tanzu超入門編① 3分でわかるコンテナ概要

VMware Tanzu超入門編①
3分でわかるコンテナ概要

企業が、激変するビジネス環境に俊敏に対応していく上で、アプリケーション開発の側面から注目されているのが、仮想化技術の一つであるコンテナです。この記事では、従来の仮想マシンとコンテナとの違い、コンテナのメリット、課題などについて紹介します。

目次

コンテナと仮想マシンの違い

仮想化技術の1つであるコンテナは、これまでのハイパーバイザー型の仮想マシンとどう異なるのでしょうか。

下図のように、仮想マシンはハイパーバイザーOSレベルで仮想環境を分離するため、Linux、WindowsといったOSを混在させることができます。物理マシンとほぼ同様の機能を実現し、IP管理も可能です。

一方で、コンテナはホストOSのカーネルを共有して、その上で複数のコンテナが稼働します。ネットワークは、IPアドレスがコンテナごとに自動設定され、外部とはNAT(Network Address Translation)で接続することになります。

仮想マシンとコンテナの違い

コンテナプラットフォーム「Docker」

コンテナ型の仮想環境を作成、配布、実行するためのプラットフォームにはいくつかありますが、そのデファクトスタンダードと言えるのが、Dockerです。Dockerは、dotCloud社(現Docker社)が開発し、2013年にオープンソースのプロジェクトとして公開されました。今日では、パブリッククラウドからオンプレミスシステムまで、さまざまなシーンで利用されています。ホストOS上で稼働するDocker Engine(コンテナランタイム)がコンテナを動かす役割を担い、複数のコンテナを稼働させます。

コンテナの仕組み(Dockerの例)

コンテナの特長とメリット

コンテナの特長として挙げられるのが、「高速な起動」「軽量なリソース」「可搬性の良さ」です。

高速な起動仮想マシンは起動に数分を要するのに対し、コンテナは数ミリ秒から数秒と高速。またコンテナ環境の作成や破棄も迅速に行える。
軽量なリソースホストOSのカーネルを共有することで、CPUやメモリなどのリソースを節約できる。
可搬性の良さパブリッククラウド、プライベートクラウド、オンプレミス環境の物理サーバーや仮想マシンなど、別の環境で稼働できる。

特に、企業システムのハイブリッドクラウド化/マルチクラウド化が進んでいる今、インフラを意識せずに迅速に作成・廃棄・運搬できることは、大きなメリットです。従来は開発、テストなどでライブラリのバージョン違いなどで動かないといった課題がありましたが、コンテナはローカルの開発環境でも本番環境でもそのまま動かせます。このことは、開発と運用を連携し円滑に回すDevOpsの実現にも大きく貢献します。

コンテナの基本的な使い方(Dockerの例)

また、コンテナは、近年ソフトウェアのアーキテクチャーとして注目されている「マイクロサービス」とも相性が良いとされています。これまでのようなモノリシック(一枚板)なアーキテクチャーではなく、マイクロサービスでは個別のサービスをコンポーネント化して部品として使い、それらのサービスを疎結合のAPIで組み合わせることで一つのサービスを提供します。そうしたアーキテクチャーを実現する上でも、コンテナは重要な役割を果たします。

コンテナの課題

コンテナには、インフラを意識せずに素早くアプリ開発・運搬できるというメリットがあります。だからといって、ハイパーバイザー型の仮想マシンにも優れた点がいくつもあります。重要なのは、用途に応じて使い分けることが必要だということです。

コンテナの課題としては、既存アプリをコンテナ化する際に作り直しになる、1つのOSで動くためセキュリティ要件を検討しなければならないといったことです。

また運用についても、まだ十分に知見が蓄積されておらず、運用が置き去りになりがちだというという点も課題として残ります。企業システムのあちこちでコンテナ化が進み、複数のコンテナエンジンを利用するようになると、管理面・運用面でさまざまな課題が発生してきます。

それらを解決するのが、コンテナオーケストレーションツールであるであり、Kubernetes環境を統合的に管理できる「VMware Tanzu」(以下、Tanzu)です。Tanzuを利用することで、アプリケーション開発者はもちろん、IT管理者が感じているコンテナ運用管理の課題を解決できます。次回以降で、KubernetesやTanzusについて紹介していきます。

コンテナの課題
目次