docker-basics について
Docker 初学者向けの基礎スキルです。主要な概念やアーキテクチャ、インストール、入門操作を学習パスやよくある問題とともに解説します。
主な機能
- 01イメージ、コンテナ、レジストリ、Engineの解説
- 02コンテナと仮想マシンの比較
- 03Dockerアーキテクチャの紹介
- 04インストールとクイックスタートの手順
- 05よくある問題と対処法
活用シーン
- 01Dockerをゼロから学ぶ場面
- 02初めてDockerをインストールして確認する場面
- 03コンテナを導入するか検討する場面
- 04コンテナと仮想マシンの違いを理解する場面
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ full-stack-skills/ docker-skills --skill docker-basicsインストール後、Claude Code で/docker-basicsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlexamples/01-first-container.md02-container-lifecycle.mdreferences/01-docker-architecture.md02-container-vs-vm.md03-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) |
| 起動時間 | 数秒 | 数分 |
| サイズ | MB | GB |
| 密度 | 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 | 方法 | 備考 |
|---|---|---|
| macOS | Docker Desktop | GUI、CLI、Compose、K8s が含まれます |
| Windows | Docker Desktop + WSL2 | WSL2 バックエンドを推奨 |
| Linux | apt/yum install docker-ce | GUI なし。ユーザーを 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/K8s | docker-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:中国語のドキュメントとコメントに対応しています。国内環境への適応のセクションを参照してください。