mcpField
D
docker-essentials

docker-essentials

github.com/sundial-orgクラウド・DevOps670164 回インストール34 週間前に更新
リポジトリ

docker-essentials について

docker-essentialsは、Dockerコンテナ、イメージ、Composeサービス、ネットワーク、ボリュームを管理するコマンドリファレンススキルです。一般的な運用やデバッグ用コマンドを必要とする開発者向けに、開発環境とデータベースの例を示します。

主な機能

  1. 01コンテナの起動、停止、検査
  2. 02ログの表示とコンテナ内でのコマンド実行
  3. 03イメージのビルド、取得、タグ付け
  4. 04Composeサービスの管理
  5. 05ネットワークとボリュームの操作
  6. 06Dockerシステムリソースのクリーンアップ

活用シーン

  1. 01ソースをマウントした開発コンテナの起動
  2. 02永続ストレージ付きデータベースコンテナの実行
  3. 03ログやシェルを使ったコンテナのデバッグ

インストール

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

$npx skills add https://github.com/sundial-org/awesome-openclaw-skills --skill docker-essentials

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

詳細

Docker の基本

コンテナーとイメージを管理するための基本的な Docker コマンドです。

コンテナーのライフサイクル

コンテナーの実行
# Run container from image
docker run nginx

# Run in background (detached)
docker run -d nginx

# Run with name
docker run --name my-nginx -d nginx

# Run with port mapping
docker run -p 8080:80 -d nginx

# Run with environment variables
docker run -e MY_VAR=value -d app

# Run with volume mount
docker run -v /host/path:/container/path -d app

# Run with auto-remove on exit
docker run --rm alpine echo "Hello"

# Interactive terminal
docker run -it ubuntu bash
コンテナーの管理
# List running containers
docker ps

# List all containers (including stopped)
docker ps -a

# Stop container
docker stop container_name

# Start stopped container
docker start container_name

# Restart container
docker restart container_name

# Remove container
docker rm container_name

# Force remove running container
docker rm -f container_name

# Remove all stopped containers
docker container prune

コンテナーの調査とデバッグ

ログの表示
# Show logs
docker logs container_name

# Follow logs (like tail -f)
docker logs -f container_name

# Last 100 lines
docker logs --tail 100 container_name

# Logs with timestamps
docker logs -t container_name
コマンドの実行
# Execute command in running container
docker exec container_name ls -la

# Interactive shell
docker exec -it container_name bash

# Execute as specific user
docker exec -u root -it container_name bash

# Execute with environment variable
docker exec -e VAR=value container_name env
調査
# Inspect container details
docker inspect container_name

# Get specific field (JSON path)
docker inspect -f '{{.NetworkSettings.IPAddress}}' container_name

# View container stats
docker stats

# View specific container stats
docker stats container_name

# View processes in container
docker top container_name

イメージの管理

イメージのビルド
# Build from Dockerfile
docker build -t myapp:1.0 .

# Build with custom Dockerfile
docker build -f Dockerfile.dev -t myapp:dev .

# Build with build args
docker build --build-arg VERSION=1.0 -t myapp .

# Build without cache
docker build --no-cache -t myapp .
イメージの管理
# List images
docker images

# Pull image from registry
docker pull nginx:latest

# Tag image
docker tag myapp:1.0 myapp:latest

# Push to registry
docker push myrepo/myapp:1.0

# Remove image
docker rmi image_name

# Remove unused images
docker image prune

# Remove all unused images
docker image prune -a

Docker Compose

基本操作
# Start services
docker-compose up

# Start in background
docker-compose up -d

# Stop services
docker-compose down

# Stop and remove volumes
docker-compose down -v

# View logs
docker-compose logs

# Follow logs for specific service
docker-compose logs -f web

# Scale service
docker-compose up -d --scale web=3
サービスの管理
# List services
docker-compose ps

# Execute command in service
docker-compose exec web bash

# Restart service
docker-compose restart web

# Rebuild service
docker-compose build web

# Rebuild and restart
docker-compose up -d --build

ネットワーキング

# List networks
docker network ls

# Create network
docker network create mynetwork

# Connect container to network
docker network connect mynetwork container_name

# Disconnect from network
docker network disconnect mynetwork container_name

# Inspect network
docker network inspect mynetwork

# Remove network
docker network rm mynetwork

ボリューム

# List volumes
docker volume ls

# Create volume
docker volume create myvolume

# Inspect volume
docker volume inspect myvolume

# Remove volume
docker volume rm myvolume

# Remove unused volumes
docker volume prune

# Run with volume
docker run -v myvolume:/data -d app

システム管理

# View disk usage
docker system df

# Clean up everything unused
docker system prune

# Clean up including unused images
docker system prune -a

# Clean up including volumes
docker system prune --volumes

# Show Docker info
docker info

# Show Docker version
docker version

よくあるワークフロー

開発用コンテナー:

docker run -it --rm \
  -v $(pwd):/app \
  -w /app \
  -p 3000:3000 \
  node:18 \
  npm run dev

データベース用コンテナー:

docker run -d \
  --name postgres \
  -e POSTGRES_PASSWORD=secret \
  -e POSTGRES_DB=mydb \
  -v postgres-data:/var/lib/postgresql/data \
  -p 5432:5432 \
  postgres:15

簡単なデバッグ:

# Shell into running container
docker exec -it container_name sh

# Copy file from container
docker cp container_name:/path/to/file ./local/path

# Copy file to container
docker cp ./local/file container_name:/path/in/container

マルチステージビルド:

# Dockerfile
FROM node:18 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html

便利なフラグ

docker run のフラグ:

  • -d:デタッチモード(バックグラウンド)
  • -it:対話型ターミナル
  • -p:ポートマッピング(ホスト:コンテナー)
  • -v:ボリュームのマウント
  • -e:環境変数
  • --name:コンテナー名
  • --rm:終了時に自動削除
  • --network:ネットワークに接続

docker exec のフラグ:

  • -it:対話型ターミナル
  • -u:ユーザー
  • -w:作業ディレクトリ

ヒント

  • .dockerignore を使用して、ビルドコンテキストからファイルを除外します
  • Dockerfile の RUN コマンドをまとめて、レイヤー数を減らします
  • マルチステージビルドを使用して、イメージサイズを小さくします
  • イメージには必ずバージョンをタグ付けします
  • 使い捨てのコンテナーには --rm を使用します
  • 複数コンテナーのアプリには docker-compose を使用します
  • docker system prune で定期的にクリーンアップします

ドキュメント

公式ドキュメント:https://docs.docker.com/ Dockerfile リファレンス:https://docs.docker.com/engine/reference/builder/ Compose ファイルのリファレンス:https://docs.docker.com/compose/compose-file/

コメント