🐳

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~5MB

musl libc。軽量。本番向け。

debian/ubuntu~80MB

glibc。互換性最高。

distroless~20MB

シェルなし。セキュア。

scratch0MB

空。静的バイナリ用。

Docker vs Kubernetes

Docker

  • • コンテナの作成・実行
  • • 単一ホスト向け
  • • 開発・テスト環境
  • • シンプルな構成

Kubernetes

  • • コンテナのオーケストレーション
  • • マルチホストクラスタ
  • • 本番環境向け
  • • 自動スケーリング・自己修復

カテゴリ