コンテナとは
- 仮想化技術の1つ。またはコンテナエンジン上で稼働する、抽象化された機能グループの単位。
- 仮想化には「ハイパーバイザ型」と「コンテナ型」があり、抽象化される範囲が異なる。
- ハイパーバイザ型は、ホストOSにハイパーバイザを稼働させ、その上で仮想マシンを稼働させる。ハードウェア(CPU/メモリ等)は仮想マシン間で共有され、それより上のOSやアプリケーション等は仮想マシン毎に管理する。VMwareやHyper-V、Virtual BoxやKVM等。
- コンテナ型は、OS上でコンテナエンジンを稼働させ、その上で"コンテナ"を稼働させる。OSのカーネルはコンテナ間で共有され、それより上のアプリケーション等はコンテナ毎に管理する。DockerやLinux Containers(LXC)等。
ハイパーバイザ型仮想化とコンテナ型仮想化の抽象化(=各単位で共有する)の範囲の違いは、以下画像を参照
※画像は『注目を浴びる「Dockerコンテナ」、従来の仮想化と何が違うのか?』より
https://cn.teldevice.co.jp/column/10509/
コンテナ実行プラットフォーム
様々あります。
- オープンソース系:Docker、Kubernetes等
- 有償ソフト系:Redhat Openshift、VMware Tanzu等
- マネージドサービス系:パブリッククラウドのネイティブサービス等
- AWS:
- AWS Fargate(コンテナ実行・オーケストレーション)
- Amazon ECS(コンテナレジストリ)
- Amazon EKS(マネージドKubernetesサービス)等
- Azure:
- Azure Container Instances(コンテナ実行・オーケストレーション)
- Azure Container Registry(コンテナレジストリ)
- Azure Kubernetes Service(マネージドKubernetesサービス)等
- GCP:
- Cloud Run(コンテナ実行・オーケストレーション)
- Container Registry(レジストリ)
- Google Kubernetes Engine(GKE)(マネージドKubernetesサービス)等
- AWS:
コンテナの利用に伴うビジネスインパクト
私見から記載してみます。
- 開発サイクルの短縮。
- 可搬性が高いです。コンテナイメージを配布することで、簡単に環境構築ができます。従来のシステム開発では、テスト実施するための環境コピーにものすごい時間と手間をかけるのが一般的でした。(AnsibleやChefで構築自動化する必要もなし)
- 工数削減。
- 関連オーケストレーションツールを利用することで、可用性を簡単に実現できます。
- コンテナにはOSカーネルは含まれないため、OSのパッチ適用やメンテナンス工数を削減できます。