基本コマンド
Docker
images、containers、exec、logs
イメージ操作
pull、build、list、remove
# イメージの取得
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
# コンテナの起動
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
# リソース使用状況
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 # ボリュームも含めて削除(注意!)