docker-essentials について
docker-essentialsは、Dockerコンテナ、イメージ、Composeサービス、ネットワーク、ボリュームを管理するコマンドリファレンススキルです。一般的な運用やデバッグ用コマンドを必要とする開発者向けに、開発環境とデータベースの例を示します。
主な機能
- 01コンテナの起動、停止、検査
- 02ログの表示とコンテナ内でのコマンド実行
- 03イメージのビルド、取得、タグ付け
- 04Composeサービスの管理
- 05ネットワークとボリュームの操作
- 06Dockerシステムリソースのクリーンアップ
活用シーン
- 01ソースをマウントした開発コンテナの起動
- 02永続ストレージ付きデータベースコンテナの実行
- 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/
コメント
Markdown 対応