コンテナとは?
クラウドネイティブNow
クラウドネイティブを活用する上で基幹となる重要な要素技術である「コンテナ」について説明します。
コンテナ技術とは
コンテナ技術はどのようなものなのか、従来の「サーバー仮想化技術」と「コンテナ技術」を比較して説明します。この2つは対立するものではなく共存可能な技術です。
従来のサーバー仮想化技術は、1つのOS上にゲストOSを複数配置できます。仮想環境上にOSが必要なため、その分起動が遅くなります。また、OS分のリソースも必要であるため、サーバーに配置できる仮想環境は少なくなります。
それに対して、コンテナ技術は1つのOS上に仮想化した実行環境を複数配置できます。OSはコンテナを配置するサーバーのものを使うため、実行環境上にOSが不要となり、その分起動が早くなります。また、OS分のリソースも不要であるため、サーバーに配置できる実行環境は多くなります。
コンテナ技術の構造
従来のサーバー仮想化技術とコンテナ技術について、もう少し詳しく説明します。
従来のサーバー仮想化技術(上の図において左側)では、ハイパーバイザーと呼ばれる仮想化ソフトウェアが実際のサーバー(ハードウェア)をバーチャルに分割して「仮想マシン(VM:Virtual Machine)」を作り、それぞれの仮想マシンにメモリーやCPUといったリソースを割り当てます。
コンテナ技術(上の図において右側)では、サーバーへのアクセスはホストOSが一括でそのまま仮想化を経ずに担い、コンテナランタイムが各コンテナを制御しています。
従来のサーバー仮想化技術では、仮想マシンごとにOSが含まれていますが、コンテナ技術ではコンテナにOSが含まれていません。そのため、2つの技術を比較した場合、コンテナ技術の方が軽量です。
コンテナ技術の特長
軽くて速い
1つ目の特長は「軽くて速い」です。
従来のサーバー仮想化技術では、仮想サーバー全体を再起動する必要があるため、起動に時間がかかります。コンテナ技術ではOSを再起動する必要がなく、コンテナの資産は数MB程度と非常に軽量なため、起動時間が数秒程度と再起動が早く、すぐに使うことができます。このため、環境配備の所要時間短縮が可能で、バージョンアップリリースや障害復旧の高速化につなげることができます。
効率的に使える
2つ目の特長は「効率的に使える」です。
コンテナ技術は少ないリソースで動作できるため、効率よく資産を配置することができ、1つのサーバーでより多くのアプリケーションを実行できます。
移動が簡単
3つ目の特長は「移動が簡単」です。
コンテナ技術は、最低限動作に必要なものをパッケージングすることができるので、OSへの依存度が低くなります。そのため、異なる環境で同じように動作でき、移行も容易です。
サーバー仮想化技術とコンテナ技術の比較
ここで従来のサーバー仮想化技術とコンテナ技術を比較してみました。
サーバー仮想化技術とコンテナ技術は状況に合わせて選びますが、近年コンテナ技術が効果的なケースが増えています。コンテナ技術はスピードが強みです。ここまででご紹介した3つの特長に相当する、「起動の速さ」、「必要なリソースの量」、「移動の簡単さ」といった観点では、コンテナ技術が有利です。
それに対して、現時点で安定性の面ではコンテナ技術に比べて従来のサーバー仮想化技術が有利です。環境毎にOSを独立させていることから、コンテナ技術より動作の「安定性」や「セキュリティ」は高くなります。安定性には技術者の慣れであったり、すでに蓄積しているノウハウなども影響しています。
「コスト(導入・運用など)」については、システムの作りによってどちらが安くなるかは要件次第です。
変化の激しい時代に対応するために、素早く機能追加・改修を行ったり、柔軟なシステム構成にする場合には、コンテナ技術が効果的になります。
その他、コンテナ技術で押さえておきたいポイント
ツール
1つめは、ツールについてです。
現在、デファクトスタンダードとして最も使われているツールは「Docker(ドッカー)」です。Dockerは、Docker社が開発しているコンテナ型の仮想環境を作成・配布・実行するためのプラットフォームです。
標準化
2つ目は、標準化についてです。
コンテナ技術の仕様はOpen Container Initiative(OCI)によって標準化されています。そのため、異なるコンテナ技術を採用したプラットフォーム間の移動も簡単に行うことができます。
コンテナ公式資産の使い易さ
3つ目は、コンテナ公式資産の使い易さについてです。
各ベンダーから公式なコンテナ資産が配布されているということも大きなメリットです。このコンテナ資産を使うことで、インストール時間無しで即座にさまざまなツールが利用できます。
コンテナの特性
コンテナの中には情報を保存しないことが原則となっています。これは、コンテナへの変更内容が再起動すると消えてしまうためであり、この特性を「揮発性」と言います。
この揮発性により、コンテナ内の環境は常にクリーンな状態に保たれる一方、残す必要のあるデータは、コンテナの外に保存する必要があります。環境がクリーンな状態である事の良さは、現在稼働しているシステムが同じように動き続ける点にあります。
従来のサーバー仮想化技術の場合、蓄積されたデータや継続的な設定変更により、意図せず環境が変わってしまい、動作に不具合が生じることがあります。その点、起動する度に常にクリーンな状態になるコンテナ技術を使った仮想化は、環境の変更による不具合が生じる可能性は低くなり、自動化との相性が良くなります。
コンテナの揮発性に起因する特性を「不変(Immutable)」といい、コンテナ技術を扱う際に重要なポイントです。コンテナの特性としてぜひ覚えておいてください。
不変という特性を活かした安定稼働の実現
コンテナの不変性という特性を活用することにより、コンテナ技術は「イミュータブルインフラストラクチャー(Immutable Infrastructure)」という手法を活用した安定稼働の実現がしやすいと言えます。
「イミュータブルインフラストラクチャー」は、「一度構築した本番環境には更新やパッチの提供などの変更を加えず稼働させる」という考え方です。環境の更新や、最新パッチの適用が必要な場合は、コンテナを再作成し、置き換える形で対応します。
従来の手法は、1つの本番環境に直接変更を加えて行くため、更新の数が多くなると環境が複雑化し差分管理が大変になります。それに比べて、イミュータブルインフラストラクチャーの場合は、その都度新しく作成したコンテナに切り替えるだけなので、複雑性がなくアプリケーションの稼働が安定します。
軽量さと起動の速さから、配置・破棄が容易なコンテナ技術を使えば、システム運用者のさまざまな悩みを解決できます。
本コンテンツに関するお問い合わせ
お電話でのお問い合わせ
Webでのお問い合わせ
当社はセキュリティ保護の観点からSSL技術を使用しております。