5.1 コンテナ概要
Container Overview
コンテナは、アプリケーションとその依存関係をパッケージ化し、どの環境でも一貫して実行できる技術である。Dockerが事実上の標準となり、Kubernetesがオーケストレーションの標準となった。
コンテナと仮想マシンの違い
@startuml
skinparam backgroundColor #FEFEFE
rectangle "仮想マシン" as VM #DBEAFE {
rectangle "App A" as AppA1 #93C5FD
rectangle "Bins/Libs" as Lib1 #93C5FD
rectangle "Guest OS" as GOS1 #60A5FA
rectangle "App B" as AppB1 #93C5FD
rectangle "Bins/Libs" as Lib2 #93C5FD
rectangle "Guest OS" as GOS2 #60A5FA
rectangle "Hypervisor" as Hyper #1E40AF
rectangle "Host OS" as HOS1 #1E3A8A
rectangle "Infrastructure" as Infra1 #1E3A8A
}
rectangle "コンテナ" as Container #D1FAE5 {
rectangle "App A" as AppA2 #6EE7B7
rectangle "Bins/Libs" as Lib3 #6EE7B7
rectangle "App B" as AppB2 #6EE7B7
rectangle "Bins/Libs" as Lib4 #6EE7B7
rectangle "Container Runtime (Docker)" as Docker #059669
rectangle "Host OS" as HOS2 #047857
rectangle "Infrastructure" as Infra2 #047857
}
note bottom of VM
- 各VMにOS
- 起動に分単位
- GBサイズ
- 完全分離
end note
note bottom of Container
- OSカーネル共有
- 秒単位で起動
- MBサイズ
- プロセス分離
end note
@enduml
図1: 仮想マシンとコンテナのアーキテクチャ比較
| 特性 | 仮想マシン | コンテナ |
|---|---|---|
| 起動時間 | 分単位 | 秒単位 |
| サイズ | GB | MB |
| 分離レベル | 完全分離 | プロセス分離 |
| リソース効率 | 低い | 高い |
| ポータビリティ | ハイパーバイザー依存 | 高い |
Dockerの基本概念
@startmindmap skinparam backgroundColor #FEFEFE * Docker ** イメージ *** 読み取り専用テンプレート *** レイヤー構造 *** Dockerfileから構築 *** レジストリに保存 ** コンテナ *** イメージの実行インスタンス *** 読み書き可能なレイヤー *** 起動/停止/削除 *** 一時的な存在 ** レジストリ *** イメージの保存場所 *** Docker Hub (パブリック) *** ECR / ACR / GCR (クラウド) left side ** Dockerfile *** FROM (ベースイメージ) *** RUN (コマンド実行) *** COPY (ファイルコピー) *** ENV (環境変数) *** EXPOSE (ポート) *** CMD (起動コマンド) ** ボリューム *** 永続化ストレージ *** コンテナ間共有 *** ホストマウント @endmindmap
図2: Dockerの基本概念
Dockerでは、Dockerfileに定義された手順でイメージを構築(build)し、イメージからコンテナを起動(run)する。コンテナは一時的な存在であり、データの永続化にはボリュームを使用する [1]。
クラウドコンテナレジストリ
| サービス | プロバイダ | 特徴 |
|---|---|---|
| ECR | AWS | IAM統合、脆弱性スキャン |
| ACR | Azure | Entra ID統合、geo-replication |
| Artifact Registry | GCP | 旧GCR後継、マルチフォーマット |
| Docker Hub | Docker社 | パブリック標準、無料枠あり |
Docker入門との連携
Dockerの詳細についてはDocker入門を参照。本章ではクラウドにおけるコンテナ活用に焦点を当てる。
Dockerの詳細についてはDocker入門を参照。本章ではクラウドにおけるコンテナ活用に焦点を当てる。
出典
[1] Docker Documentation. https://docs.docker.com/
[2] OCI (Open Container Initiative). https://opencontainers.org/
[2] OCI (Open Container Initiative). https://opencontainers.org/