🐳
Containers / Kubernetes
コンテナ技術とオーケストレーション
コンテナはアプリケーションとその依存関係をパッケージ化する技術です。 Kubernetesはコンテナのデプロイ、スケーリング、管理を自動化するオーケストレーションプラットフォームです。
VM vs コンテナ
仮想マシン(VM)
App
Guest OS
Hypervisor
Host OS
Hardware
重い、起動遅い、完全分離
コンテナ
App
Container Runtime
Host OS
Hardware
軽量、起動速い、カーネル共有
コンテナイメージ
イメージはコンテナの設計図。OS、ランタイム、ライブラリ、アプリを含む読み取り専用テンプレート。 Docker/Kubernetes共通で使用。
レイヤー構造
Container Layer(R/W)コンテナ削除で消える
↑ 実行時に追加
Image Layers(Read-Only)
COPY app/
RUN npm install
FROM node:alpine
イメージレイヤー(R/O)
- • 読み取り専用、変更不可
- • 複数コンテナで共有
- • Union FSで統合表示
コンテナレイヤー(R/W)
- • 書き込み可能
- • コンテナごとに独立
- • 削除で消える→Volume必要
イメージ内のOS
イメージに含まれる(ユーザースペース)
libc
シェル
パッケージマネージャ
コマンド群
↓ システムコール
Linux Kernel(ホストと共有)
alpine~5MBmusl libc。軽量。本番向け。
debian/ubuntu~80MBglibc。互換性最高。
distroless~20MBシェルなし。セキュア。
scratch0MB空。静的バイナリ用。
Docker vs Kubernetes
Docker
- • コンテナの作成・実行
- • 単一ホスト向け
- • 開発・テスト環境
- • シンプルな構成
Kubernetes
- • コンテナのオーケストレーション
- • マルチホストクラスタ
- • 本番環境向け
- • 自動スケーリング・自己修復