mcpField
D
docker-basics

docker-basics

github.com/full-stack-skillsクラウド・DevOps3111 回インストール4 週間前に更新
リポジトリ

docker-basics について

Docker 初学者向けの基礎スキルです。主要な概念やアーキテクチャ、インストール、入門操作を学習パスやよくある問題とともに解説します。

主な機能

  1. 01イメージ、コンテナ、レジストリ、Engineの解説
  2. 02コンテナと仮想マシンの比較
  3. 03Dockerアーキテクチャの紹介
  4. 04インストールとクイックスタートの手順
  5. 05よくある問題と対処法

活用シーン

  1. 01Dockerをゼロから学ぶ場面
  2. 02初めてDockerをインストールして確認する場面
  3. 03コンテナを導入するか検討する場面
  4. 04コンテナと仮想マシンの違いを理解する場面

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/full-stack-skills/docker-skills --skill docker-basics

インストール後、Claude Code で/docker-basicsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

agents/
openai.yaml
examples/
01-first-container.md
02-container-lifecycle.md
references/
01-docker-architecture.md
02-container-vs-vm.md
03-installation-guide.md

詳細

Docker Basics — 概念と基礎

Docker エコシステムへの最初の入口です。Docker の概念、アーキテクチャ、基本操作をゼロから理解します。

使用する場面

✅ 使用する場面❌ スキップする場面
Docker を初めて使う、基礎から学ぶDocker をすでに十分に使いこなしている
コンテナーと VM の違いを理解する必要がある特定の Dockerfile/CLI コマンドが必要 → docker-build/docker-run
初めて Docker をセットアップする複数コンテナーのオーケストレーションが必要 → docker-compose
Docker を導入するか評価するセキュリティスキャンが必要 → docker-security

コアコンセプト

概念定義たとえ
イメージアプリと依存関係を含む読み取り専用のテンプレートクラス定義
コンテナーイメージの実行可能なインスタンスオブジェクトのインスタンス
レジストリイメージを保存/共有するリポジトリApp Store
Docker Engineコンテナーをビルドして実行するランタイムJVM/Python インタープリター

コンテナーと VM の比較

項目コンテナーVM
分離プロセスレベル(ホストカーネルを共有)ハードウェアレベル(完全な OS)
起動時間数秒数分
サイズMBGB
密度1 ホストあたり数十個1 ホストあたり数個
ユースケースマイクロサービス、CI/CD、開発環境レガシーアプリ、複数 OS、強力な分離

Docker アーキテクチャ

┌─────────────────────────────┐
│         Docker CLI           │  ← docker build/run/push...
├─────────────────────────────┤
│       Docker Daemon          │  ← dockerd: manages images, containers, networks, volumes
├─────────────────────────────┤
│       containerd             │  ← container runtime supervisor
├─────────────────────────────┤
│        runc                  │  ← OCI runtime (actually runs containers)
└─────────────────────────────┘
         │
    ┌────┴────┐
    ▼         ▼
 Registry   Host OS
 (Docker    (Linux kernel:
  Hub)       namespaces, cgroups)

クイックスタート

# Verify installation
docker --version
docker run hello-world

# Pull and run your first container
docker pull nginx:alpine
docker run -d -p 8080:80 --name my-nginx nginx:alpine

# Check it's running
curl localhost:8080
docker ps
docker stop my-nginx

Docker オブジェクトモデル

docker run → Container (running instance of an image)
docker build → Image (built from Dockerfile)
docker pull → Image (downloaded from Registry)
docker push → Image (uploaded to Registry)
docker volume → Volume (persistent data)
docker network → Network (container communication)

インストール方法

OS方法備考
macOSDocker DesktopGUI、CLI、Compose、K8s が含まれます
WindowsDocker Desktop + WSL2WSL2 バックエンドを推奨
Linuxapt/yum install docker-ceGUI なし。ユーザーを docker グループに追加します
CI/サーバーDocker Engine のみ最小限のフットプリント

主な CLI グループ

docker container   → create, run, start, stop, rm, ls, inspect, logs, exec
docker image       → build, pull, push, tag, ls, rm, prune, inspect
docker volume      → create, ls, rm, prune, inspect
docker network     → create, ls, rm, inspect, connect, disconnect
docker system      → df, prune, info, events

ワークフロー — 推奨学習パス

ステップ 1: 概念を理解する: Core Concepts(Image/Container/Registry/Engine)を読む ステップ 2: インストールを確認する: docker run hello-world でインストールの成功を確認する ステップ 3: 最初のコンテナー: docker run -d -p 8080:80 nginx:alpine を実行して試す ステップ 4: さらに学ぶ: docker build(Dockerfile の作成)→ docker run(コンテナーの管理)を習得する ステップ 5: エコシステムに進む: 必要に応じて docker-dockerfile/docker-build/docker-compose を学ぶ

注意点 — よくある落とし穴

  • イメージとコンテナーの混同: docker run は実行するたびに新しいコンテナーを作成します。→ 対処法: docker start <name> で既存のコンテナーを再起動します。停止中のコンテナーを確認するには docker ps -a を使います。
  • root 権限: Linux では、ユーザーを docker グループに追加しない限り sudo が必要です(セキュリティリスク:docker グループは root アクセスと同等です)。→ 対処法: sudo usermod -aG docker $USER && newgrp docker を実行するか、rootless Docker を使います。
  • ディスクの肥大化: 古いイメージ/ボリューム/キャッシュはすぐに蓄積します。→ 対処法: 毎月 docker system prune -a を実行します。事前に docker system df で確認してください。
  • ポートの競合: -p 8080:80 はホストの 8080 番ポート → コンテナーの 80 番ポートを意味します。ホスト側のポートが使用中の場合は、ホスト側のポートを変更します。→ 対処法: lsof -i :8080 でポートを使用中のプロセスを特定し、別のポートを使います。
  • データの消失: ボリュームを使わない場合、コンテナー内のデータは一時的なものです。→ 対処法: 状態を保持するデータには必ず -v volume_name:/data を使います。コンテナーファイルシステムには決して依存しないでください。

対応範囲 — できることとできないこと

分類シナリオ説明
✅ 対応可能Docker の概念学習(Image/Container/Registry/Engine)コアコンセプトをゼロから説明します
✅ 対応可能インストールガイド(macOS/Linux/Windows)各プラットフォームのインストール手順を提供します
✅ 対応可能最初のコンテナーの実践docker run hello-world と nginx の例
⚠️ 条件付きコンテナーの仕組みを深く理解するLinux namespace/cgroups のドキュメントとの併用を推奨します
⚠️ 条件付きDocker Compose による複数コンテナーの利用基本概念を学んだ後、docker-compose スキルに進みます
❌ 対象外Dockerfile の作成docker-dockerfile を使用します
❌ 対象外イメージのビルド/プッシュdocker-build を使用します
❌ 対象外本番環境へのデプロイ/Swarm/K8sdocker-production を使用します

このスキルを使用しない場面

❌ スキップする場面✅ 代わりに使用するもの
Dockerfile を作成する必要があるdocker-build
コンテナーの管理が必要docker-run
複数コンテナーのアプリが必要docker-compose
Docker の基礎をすでに理解している該当するスキルに進む

セキュリティと安定性

  • すべての例は学習用です。本番環境では、公式イメージと検証済みの発行元を使用してください。
  • Linux で Docker グループに所属することは、root 権限を持つことと同等です。
  • 実行可能なスクリプトは同梱されていません。このスキルでは、概念と基本的な操作について学びます。

📚 公式ドキュメントの参考資料

ドキュメントURL
Docker の概要https://docs.docker.com/get-started/docker-overview/
Docker の概念https://docs.docker.com/get-started/docker-concepts/the-basics/what-is-a-container/
Docker のインストールhttps://docs.docker.com/get-started/get-docker/
Docker エンジンhttps://docs.docker.com/engine/
Docker 入門ワークショップhttps://docs.docker.com/get-started/workshop/
Docker CLI リファレンスhttps://docs.docker.com/reference/cli/docker/

🧭 Docker スキルの学習ステップ

📍 現在地:docker-basics — ステップ 1:Docker の概念と基礎

basics → build → run → networking/storage → compose → security/cicd → production/troubleshooting → ai-ml

→ 次へ:docker-build — Dockerfile を作成し、最適化されたイメージをビルドする

よくある質問

Q1:このスキルをすぐに使い始めるにはどうすればよいですか? A:上記のクイックスタートのセクションを参照し、手順に沿って操作してください。

Q2:バージョンの互換性に関する問題が発生した場合は、どうすればよいですか? A:依存関係のバージョンを確認し、lock ファイルを使って固定してください。よくある落とし穴のセクションも参照してください。

Q3:本番環境で使用するにはどうすればよいですか? A:ベストプラクティスのセクションを参照し、設定が正しいことを確認したうえで、監視とログの記録を行ってください。

Q4:パフォーマンスを最適化するにはどうすればよいですか? A:パフォーマンス最適化に関するドキュメントを参照し、キャッシュやインデックスなどを活用してください。

Q5:貢献したり、問題を報告したりするにはどうすればよいですか? A:GitHub リポジトリで Issue または Pull Request を作成してください。

Q6:中国語に対応していますか? A:中国語のドキュメントとコメントに対応しています。国内環境への適応のセクションを参照してください。

コメント