- コンテナとは何か
- コンテナ vs. 仮想マシン (VM) の比較 MOC
[[アーキテクチャの違い (ハイパーバイザ vs. コンテナエンジン、OSの有無)]]
[[起動速度とパフォーマンス]]
[[リソース効率と集約度]]
[[分離レベルとセキュリティ]]
[[ユースケースの比較]]
- なぜコンテナ技術が重要か
[["私のマシンでは動く"問題の解決]]
[[DevOpsとマイクロサービスアーキテクチャの実現]]
[[CI/CDパイプラインの高速化と信頼性向上]]
[[クラウドネイティブアプリケーションの基盤]]
- コンテナ技術の歴史
[[chrootからJails, Solaris Zones, LXCへ]]
[[Dockerの登場とコンテナの普及]]
- Open Container Initiative (OCI) MOC
[[OCIの役割 (コンテナフォーマットとランタイムの標準化)]]
[[OCI Runtime Specification (runCなど)]]
[[OCI Image Format Specification]]
- Dockerとは
- Dockerのアーキテクチャ MOC
[[クライアント/サーバーアーキテクチャ (Docker CLI, Dockerデーモン)]]
[[Dockerオブジェクト (イメージ, コンテナ, ボリューム, ネットワーク)]]
[[Dockerレジストリ]]
- Dockerのインストールとセットアップ
[[各OS (Windows, macOS, Linux) へのインストール]]
- Dockerイメージの定義 (コンテナ作成のための読み取り専用テンプレート)
- レイヤー (Layers) とコピーオンライト (Copy-on-Write)
- Dockerfile MOC
[[Dockerfileの役割 (イメージのビルド手順を記述するテキストファイル)]]
- 主要なDockerfile命令
[[FROM (ベースイメージの指定)]]
[[RUN (コマンドの実行)]]
[[CMD (コンテナ起動時のデフォルトコマンド)]]
[[ENTRYPOINT (コンテナ起動時の実行コマンド)]] (CMDとの違い)
[[COPYvs.ADD]]
[[WORKDIR (作業ディレクトリの指定)]]
[[EXPOSE (ポートの公開)]]
[[ENV (環境変数の設定)]]
[[ARG (ビルド時引数)]]
[[VOLUME (ボリュームのマウントポイント)]
[[USER (実行ユーザーの指定)]]
[[HEALTHCHECK]]
- Dockerfileのベストプラクティス
[[軽量なベースイメージの選択 (Alpineなど)]]
[[レイヤー数の最小化]]
[[ビルドキャッシュの活用 (命令の順序)]]
[[マルチステージビルド (Multi-stage builds)]] (ビルド環境と実行環境の分離)
[[.dockerignore ファイルの活用]]
[[非rootユーザーでの実行]]
- イメージのビルド、管理、操作
[[docker build]]
[[docker images]]
[[docker pull]]
[[docker push]]
[[docker tag]]
[[docker rmi]]
[[docker history]]
[[docker save/docker load]]
- Dockerコンテナの定義 (Dockerイメージの実行可能なインスタンス)
- コンテナのライフサイクル
- コンテナの操作
[[docker run]] (コンテナの作成と実行)
[[主要なオプション (-d, -it, -p, -v, —rm, —nameなど)]]
[[docker ps]] (実行中コンテナの一覧) (-aオプション)
[[docker start/docker stop/docker restart]]
[[docker exec -it <container_id> ]] (実行中コンテナ内でのコマンド実行)
[[docker logs]] (コンテナのログ表示)
[[docker inspect]] (コンテナの詳細情報表示)
[[docker rm]] (コンテナの削除)
[[(オプション) docker pause/docker unpause]]
- コンテナの永続データ管理
- ボリューム (Volumes)
[[ボリュームの概念と利点 (Dockerによる管理、永続性、共有)]]
[[名前付きボリュームと匿名ボリューム]]
[[docker volume コマンド]]
- バインドマウント (Bind Mounts)
[[バインドマウントの概念 (ホストマシンのファイル/ディレクトリをマウント)]]
[[バインドマウントのユースケースと注意点]]
- tmpfsマウント (インメモリの一時ファイル)
- ボリューム vs. バインドマウントの比較と選択
- Dockerネットワークの基本
- ネットワークドライバ
[[bridge (デフォルト)]]
[[host]]
[[none]]
[[overlay (Swarm向け)]]
[[macvlan]]
- コンテナ間の通信
[[ブリッジネットワーク内でのコンテナ名による通信]]
- ホストとのポートマッピング (
-p オプション)
[[docker network コマンド]]
- Docker Composeの定義と目的 (複数のコンテナで構成されるアプリケーションの定義と実行)
- [[
docker-compose.yml ファイル MOC]]
[[主要なキー (version, services, networks, volumes)]]
[[サービス定義 (image, build, ports, volumes, environment, depends_onなど)]]
- Docker Composeのコマンド
[[docker-compose up]] (-dオプション)
[[docker-compose down]]
[[docker-compose ps]]
[[docker-compose logs]]
[[docker-compose exec]]
[[複数コンテナアプリケーションの例 (Webサーバー + DB + キャッシュ)]]
[[開発環境としてのDocker Compose]]
- なぜコンテナオーケストレーションが必要か
[[多数のコンテナの管理とライフサイクル]]
[[スケーリングと負荷分散]]
[[可用性と自己修復]]
[[サービスディスカバリ]]
[[デプロイメントの自動化]]
- コンテナオーケストレーションツールの比較
[[Kubernetes]] (デファクトスタンダード)
[[Docker Swarm]] (シンプルさ)
[[Amazon ECS]] (AWS統合)
[[HashiCorp Nomad]] (シンプル、柔軟)
- Kubernetesとは
[[Kubernetesの定義と目的 (コンテナ化されたアプリケーションのデプロイ、スケーリング、管理を自動化するオープンソースプラットフォーム)]]
[[Kubernetesの歴史 (Google Borgからの進化)]]
[[宣言的APIと制御ループ]]
- Kubernetesの基本概念
[[クラスタ (Cluster)]]
[[ノード (Node - Master/Control Plane, Worker)]]
[[ポッド (Pod)]] (基本デプロイ単位)
[[サービス (Service)]] (ネットワーク抽象化)
[[デプロイメント (Deployment)]] (宣言的なアプリケーション管理)
- 開発環境のセットアップ
[[kubectl (コマンドラインツール)]]
[[Minikube, kind, Docker Desktop Kubernetes (ローカルクラスタ)]]
- コンテナレジストリの役割 (Dockerイメージの保存と配布)
- パブリックレジストリ
- プライベートレジストリ
[[セルフホスト型 (Harbor, Docker Registry)]]
- クラウドプロバイダーのレジストリ
[[Amazon ECR (Elastic Container Registry)]]
[[Azure Container Registry (ACR)]]
[[Google Artifact Registry]]
[[GitHub Packages]]
- レジストリのセキュリティ (脆弱性スキャン、アクセス制御)
- ビルド時のセキュリティ
[[ベースイメージの信頼性確保]]
[[脆弱性スキャン (SCA - Software Composition Analysis)]]
[[Dockerfileのセキュリティベストプラクティス]] (非rootユーザーなど)
- デプロイ時のセキュリティ
[[コンテナレジストリのセキュリティ]]
[[オーケストレータのセキュリティ設定 (RBAC, NetworkPolicyなど)]]
- ランタイム時のセキュリティ
[[コンテナランタイムセキュリティ (gVisor, Kata Containers)]]
[[コンテナサンドボックス]]
[[ランタイムセキュリティ監視 (Falco, Sysdig Secure)]]
[[ホストOSのセキュリティ強化]]
- コンテナセキュリティのベストプラクティスまとめ
[[WebAssembly (Wasm) とコンテナの共存・融合]]
[[コンテナセキュリティの進化 (eBPFなど)]]
[[エッジコンピューティングにおけるコンテナ]]
[[AI/MLワークロードのコンテナ化 (Kubeflowなど)]]
[[開発環境のコンテナ化 (Dev Containers, Gitpod, GitHub Codespaces)]]
[[Rootlessコンテナ]]