【Docker】コマンド一覧 - ChuN6868/CodeChrysalis-fullstuck-project GitHub Wiki

自分で整理

Dockerの流れ

  1. Dockerfileからイメージをビルド
  2. 作成したイメージからコンテナを起動

イメージのビルド

下記のようなコマンドでビルドされる

docker build -t my-backend:latest ./backend
// docker build -t イメージ名[:タグ] パス

docker images
// 作成されたイメージ一覧はこのコマンドで確認

コンテナの起動

下記のようなコマンドで起動される

docker run -d --name backend-container my-backend:latest
// docker run -d --name コンテナ名 イメージ名[:タグ]

docker composeを使用した際のビルド~起動の流れ

下記のdocker-compose.ymlを例とする

# version は削除推奨(Compose V2では不要)
version: '3.8'

services:
  backend:
    build: ./backend
    ports:
      - "8080:8080"
    networks:
      - app-network
    environment:
      - SPRING_DATASOURCE_URL=${SPRING_DATASOURCE_URL}
      - SPRING_DATASOURCE_USERNAME=${SPRING_DATASOURCE_USERNAME}
      - SPRING_DATASOURCE_PASSWORD=${SPRING_DATASOURCE_PASSWORD}
    depends_on:
      - db

  frontend:
    build: ./frontend
    ports:
      - "4200:4200"
    networks:
      - app-network
    volumes:
      - ./frontend:/app
      - /app/node_modules

  db:
    image: postgres:15
    restart: always
    environment:
      # Dockerコンテナ上で生成するDB名をここで設定
      POSTGRES_DB: ${POSTGRES_DB}
      # DBのユーザー名およびパスワードの初期値をここで設定
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    ports:
      - "5432:5432"
    volumes:
      - pgdata:/var/lib/postgresql/data
    networks:
      - app-network

volumes:
  pgdata:

networks:
  app-network:

1. 依存環境の読み込み

  • .env ファイルや環境変数から${SPRING_DATASOURCE_URL} や ${POSTGRES_USER} などの変数が解決されます。
    • → Composeファイル内の環境変数が値に置き換わります。

2. イメージのビルドフェーズ

  • backend サービス

    • build: ./backend から ./backend ディレクトリの Dockerfile を使いdocker build 相当の処理でイメージを作成(キャッシュがあればそれを使う)
  • frontend サービス

    • 同様に ./frontend の Dockerfile からイメージをビルド
  • db サービス

    • image: postgres:15 となっているため、Docker Hub などから 公式のPostgresイメージをpullする(ビルドはしない)

3. コンテナの作成と起動フェーズ

  • backend、frontend、db の順でコンテナを作成し起動します。
    • ※ただし、backend は depends_on: - db があるため、まず db コンテナが起動し、db が起動後に backend が起動されます。
    • (厳密には depends_on は起動順のみ保証で「DBの準備完了」は保証しません)
  • frontend は依存関係がないため独立して起動

4. ネットワークとボリュームの設定

app-network という独自の仮想ネットワークが作成され(存在しなければ) → 各コンテナがこのネットワーク上で通信可能に

pgdata というボリュームが作成され(存在しなければ) → db コンテナのPostgreSQLのデータを永続化

5. コンテナの環境変数設定

各コンテナは environment に記載された値を環境変数として受け取り起動

  • 例)
    • backend はSpring Bootアプリが${SPRING_DATASOURCE_URL} 等のDB接続情報を環境変数で受け取り、接続を行う
    • db はPostgresの初期DB名、ユーザー、パスワードを設定されて起動

🐳 Docker コマンド チートシート(生成AIのそのままの内容)

🚀 コンテナ操作

操作内容 コマンド 補足説明
コンテナ一覧表示 docker ps 実行中のみ
停止中含む全て表示 docker ps -a 全てのコンテナ
コンテナ停止 docker stop <コンテナ名> 強制終了は kill
コンテナ削除 docker rm <コンテナ名> 停止済みのもののみ
コンテナ内へ入る docker exec -it <コンテナ名> bash シェル操作可能
コンテナのログ確認 docker logs <コンテナ名> アプリログの確認
コンテナ再起動 docker restart <コンテナ名>

📦 イメージ操作

操作内容 コマンド 補足説明
イメージ一覧表示 docker images ローカルにあるイメージ一覧
イメージ削除 docker rmi <イメージ名 or ID> 使用中は削除不可
イメージビルド docker build -t myapp . タグ名付きでビルド
イメージ取得(pull) docker pull postgres:15 Docker Hub から取得

⚙️ Docker Compose 操作

操作内容 コマンド 補足説明
ビルド+起動(前面) docker compose up --build 初回や更新後
バックグラウンド起動 docker compose up -d 非対話型起動
ビルド+非対話型起動 docker compose up --build -d 最もよく使う
停止+削除 docker compose down コンテナとネットワーク削除
ボリュームも削除 docker compose down -v DB初期化などに
ログの確認 docker compose logs -f リアルタイム
特定サービスのログ docker compose logs db PostgreSQLログなど
特定サービス再起動 docker compose restart backend

🧱 ボリューム & ネットワーク操作

操作内容 コマンド 補足説明
ボリューム一覧 docker volume ls
ボリューム削除 docker volume rm <ボリューム名> 使用中は削除不可
ボリューム検索 docker volume inspect 内容や場所を確認
ネットワーク一覧 docker network ls
ネットワーク削除 docker network rm <ネットワーク名>

🔍 情報確認系コマンド

コマンド 説明
docker inspect <対象> コンテナ/イメージの詳細をJSON形式で表示
docker stats リアルタイムのリソース使用状況
docker system df ディスク使用状況
docker system prune 未使用のすべてのリソースを一括削除(注意)

💡 よく使うワンライナー

docker compose up --build -d  # 再ビルドしてバックグラウンド起動
docker compose logs -f        # 全サービスのログをリアルタイム表示
docker compose exec db psql -U postgres  # PostgreSQLに接続
docker exec -it $(docker ps -qf "name=db") psql -U postgres
バージョン コマンド形式 推奨度
Docker Compose V1 docker-compose ❌ 非推奨
Docker Compose V2 docker compose ✅ 推奨

ビルドや起動し直しの考え方

Docker 開発で「どこを修正したか」によって、何をやり直すべきか(ビルド or 再起動 or 両方)は異なります。 🎯 目的:修正を 確実に反映させる ためにやるべきことを整理 以下の4パターンに分けて説明します👇

🔁 1. バックエンド内のコード(例:Javaファイル、HTMLなど)を修正した

💡 よくある修正: backend/src/main/java/... のコード変更

Javaのビジネスロジックを直した

ビルド済み .jar を更新したい

✅ 必要な操作: 再ビルド(MavenやGradleなど)

Dockerイメージの再ビルド

コンテナ再起動

実行例(Mavenの場合):

cd backend
mvn clean package
cd ..
docker compose up --build

またはコンテナだけ再起動したい場合:

docker compose up --build backend

🔁 2. バックエンドの Dockerfile を修正した

💡 よくある修正: openjdk:17 → openjdk:21 に変更

JARファイルのコピー先やCMD変更

✅ 必要な操作: Dockerイメージを再ビルド(必須)

コンテナを再作成・再起動

実行:

docker compose up --build backend
--build を忘れると古いイメージが再利用されるため注意!

🔁 3. docker-compose.yml を修正した

💡 よくある修正: ポート変更、ボリューム、環境変数、ネットワーク定義の変更など

✅ 必要な操作: docker compose up -d --build

新しい設定でコンテナを再作成します(サービス全体に影響が出る可能性あり)

推奨コマンド:

docker compose up -d --build

場合によっては、古い設定が残るのを防ぐために:

docker compose down
docker compose up -d --build

🔁 4. .env ファイルを修正した

💡 よくある修正: DBの名前やパスワードを変更

Spring Boot の DB接続情報を変更

✅ 必要な操作: .env の中身は Dockerイメージのビルド時とコンテナ起動時に使われるため → --build をつけて up し直すのが安全

実行:

docker compose up -d --build
.env のみ修正して --build なしで up すると、反映されないことがあります。

✅ まとめ表

image
⚠️ **GitHub.com Fallback** ⚠️