Docker

基本コマンド

Docker

images、containers、exec、logs

イメージ操作

pull、build、list、remove

images.sh bash
# イメージの取得
docker pull nginx
docker pull node:20-alpine
docker pull postgres:16

# イメージ一覧
docker images
docker images --filter "dangling=true"  # タグなし(未使用)

# イメージのビルド
docker build -t myapp:1.0 .
docker build -t myapp:1.0 -f Dockerfile.prod .
docker build --no-cache -t myapp:latest .  # キャッシュなし

# イメージの詳細確認
docker inspect myapp:1.0
docker history myapp:1.0    # レイヤー履歴

# タグ付け
docker tag myapp:1.0 myregistry.io/myapp:1.0

# イメージ削除
docker rmi myapp:1.0
docker image prune           # 未使用イメージを一括削除
docker image prune -a        # タグ付きも含めて全削除

# エクスポート・インポート
docker save myapp:1.0 | gzip > myapp.tar.gz
docker load < myapp.tar.gz

コンテナ操作

run、start、stop、exec、logs

containers.sh bash
# コンテナの起動
docker run nginx
docker run -d nginx                          # バックグラウンド
docker run -d -p 8080:80 nginx               # ポートマッピング
docker run -d --name web -p 8080:80 nginx    # 名前付き
docker run -it ubuntu bash                   # インタラクティブ
docker run --rm alpine echo "hello"          # 実行後に自動削除

# よく使うオプション
docker run -d \
  --name myapp \
  -p 3000:3000 \
  -e NODE_ENV=production \
  -e DATABASE_URL=postgres://... \
  -v $(pwd)/data:/app/data \
  --restart unless-stopped \
  myapp:latest

# コンテナ一覧
docker ps           # 起動中
docker ps -a        # 全コンテナ

# 起動・停止・削除
docker start myapp
docker stop myapp
docker restart myapp
docker rm myapp
docker rm -f myapp  # 強制停止+削除

# コンテナ内でコマンド実行
docker exec -it myapp bash
docker exec myapp cat /etc/hosts

# ログ確認
docker logs myapp
docker logs -f myapp         # フォロー
docker logs --tail 100 myapp # 最後100行

# 不要コンテナ一括削除
docker container prune

システム管理

stats、inspect、prune、system

system.sh bash
# リソース使用状況
docker stats                  # リアルタイム監視
docker stats --no-stream      # 1回だけ表示
docker stats myapp db         # 特定コンテナのみ

# コンテナ詳細
docker inspect myapp
docker inspect --format '{{.NetworkSettings.IPAddress}}' myapp
docker inspect --format '{{.State.Status}}' myapp

# ファイルのコピー
docker cp myapp:/app/logs ./logs    # コンテナ→ホスト
docker cp ./config.json myapp:/app/ # ホスト→コンテナ

# システム情報
docker info
docker version

# 一括クリーンアップ
docker system df              # ディスク使用量確認
docker system prune           # 停止コンテナ・未使用イメージ・ネットワーク削除
docker system prune -a        # 全未使用リソース削除
docker system prune -a --volumes # ボリュームも含めて削除(注意!)