はじめに

Dockerを使った開発・運用では、コマンドを素早く参照できるチートシートがあると作業効率が大幅に向上します。本記事では、Dockerの基本コマンドからイメージ・コンテナ管理、Docker Composeまでを網羅し、すぐに使える形式でまとめました。

各コマンドには実行環境・前提条件・期待される結果を明記しているため、初心者の方でも安心して利用できます。

実行環境

項目 バージョン
Docker Engine 27.x 以降
Docker Compose v2.x 以降
OS Windows / macOS / Linux

前提条件

  • Docker Desktop または Docker Engine がインストール済みであること
  • ターミナル(コマンドプロンプト、PowerShell、bash等)が使用可能であること
  • 基本的なコマンドライン操作ができること

まだDockerをインストールしていない場合は、Docker Desktop導入ガイドを参照してください。

Dockerバージョン確認

作業を始める前に、Dockerが正しくインストールされているか確認します。

コマンド 説明 期待される結果
docker --version Dockerのバージョン表示 Docker version 27.x.x, build xxxxx
docker version クライアント/サーバー詳細表示 Client/Serverのバージョン情報が表示
docker info Docker環境の詳細情報 コンテナ数、イメージ数、ストレージドライバ等
docker compose version Docker Composeのバージョン Docker Compose version v2.x.x
1
2
3
4
5
6
# 実行例
$ docker --version
Docker version 27.4.0, build bde2b89

$ docker compose version
Docker Compose version v2.32.0

コンテナ操作コマンド

コンテナの作成と起動

コマンド 説明 期待される結果
docker run <image> イメージからコンテナを作成・起動 コンテナが起動し、フォアグラウンドで実行
docker run -d <image> バックグラウンドで起動 コンテナIDが表示され、バックグラウンドで実行
docker run -it <image> /bin/bash 対話モードで起動 コンテナ内のシェルに接続
docker run --name <name> <image> 名前を指定して起動 指定した名前でコンテナが作成
docker run -p 8080:80 <image> ポートマッピングして起動 ホストの8080番がコンテナの80番に転送
docker run -v /host:/container <image> ボリュームマウントして起動 ホストのディレクトリがコンテナにマウント
docker run --rm <image> 終了時に自動削除 コンテナ停止後に自動的に削除
docker run -e KEY=VALUE <image> 環境変数を設定して起動 環境変数が設定された状態で起動
docker create <image> コンテナを作成(起動しない) コンテナIDが表示、Createdステータス
1
2
3
4
5
# Nginxをバックグラウンドで起動し、ポート8080でアクセス可能にする
$ docker run -d --name my-nginx -p 8080:80 nginx:latest
a1b2c3d4e5f6...

# 期待される結果: http://localhost:8080 でNginxのウェルカムページが表示

コンテナのライフサイクル管理

コマンド 説明 期待される結果
docker start <container> 停止中のコンテナを起動 コンテナがRunningステータスに遷移
docker stop <container> コンテナを停止(SIGTERM) コンテナがExitedステータスに遷移
docker restart <container> コンテナを再起動 コンテナが再起動しRunningステータス
docker pause <container> コンテナを一時停止 コンテナがPausedステータスに遷移
docker unpause <container> 一時停止を解除 コンテナがRunningステータスに復帰
docker kill <container> コンテナを強制停止(SIGKILL) 即座にコンテナが停止
docker rm <container> コンテナを削除 コンテナが削除される
docker rm -f <container> 実行中でも強制削除 停止+削除が実行される
1
2
3
4
5
6
7
8
# コンテナの停止と削除
$ docker stop my-nginx
my-nginx

$ docker rm my-nginx
my-nginx

# 期待される結果: docker ps -a で該当コンテナが表示されなくなる

コンテナの状態確認

コマンド 説明 期待される結果
docker ps 実行中のコンテナ一覧 Runningステータスのコンテナを表示
docker ps -a 全コンテナ一覧(停止含む) すべてのコンテナを表示
docker ps -q コンテナIDのみ表示 短縮IDの一覧が表示
docker ps --format "{{.Names}}" 名前のみ表示 コンテナ名の一覧が表示
docker logs <container> コンテナのログ表示 標準出力/エラーのログが表示
docker logs -f <container> ログをリアルタイム表示 新しいログが継続的に表示
docker logs --tail 100 <container> 直近100行のみ表示 最新100行のログが表示
docker inspect <container> コンテナの詳細情報(JSON) ネットワーク、マウント等の詳細
docker stats リソース使用状況をリアルタイム表示 CPU、メモリ、ネットワーク使用量
docker top <container> コンテナ内のプロセス一覧 実行中のプロセス情報が表示
1
2
3
4
5
6
7
8
9
# 実行中のコンテナを確認
$ docker ps
CONTAINER ID   IMAGE          COMMAND                  STATUS         PORTS                  NAMES
a1b2c3d4e5f6   nginx:latest   "/docker-entrypoint.…"   Up 5 minutes   0.0.0.0:8080->80/tcp   my-nginx

# リソース使用状況を確認
$ docker stats --no-stream
CONTAINER ID   NAME       CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O
a1b2c3d4e5f6   my-nginx   0.00%     3.5MiB / 7.77GiB      0.04%     1.45kB / 0B       0B / 0B

コンテナへの接続と操作

コマンド 説明 期待される結果
docker exec -it <container> /bin/bash コンテナ内でbashを実行 コンテナ内のシェルに接続
docker exec -it <container> /bin/sh shを使用(Alpine等) コンテナ内のシェルに接続
docker exec <container> <command> コマンドを1回実行 コマンド結果が表示
docker attach <container> コンテナのメインプロセスに接続 コンテナの標準入出力に接続
docker cp <src> <container>:<dest> ホストからコンテナへコピー ファイルがコンテナ内にコピー
docker cp <container>:<src> <dest> コンテナからホストへコピー ファイルがホストにコピー
1
2
3
4
5
6
7
8
9
# コンテナ内でシェルを起動
$ docker exec -it my-nginx /bin/bash
root@a1b2c3d4e5f6:/# 

# 期待される結果: プロンプトがコンテナ内に切り替わる

# ファイルをコンテナにコピー
$ docker cp ./index.html my-nginx:/usr/share/nginx/html/
Successfully copied 2.05kB to my-nginx:/usr/share/nginx/html/

イメージ操作コマンド

イメージの取得と一覧

コマンド 説明 期待される結果
docker pull <image> Docker Hubからイメージ取得 イメージがローカルにダウンロード
docker pull <image>:<tag> タグ指定でイメージ取得 指定バージョンがダウンロード
docker images ローカルイメージ一覧 イメージ名、タグ、サイズ等を表示
docker images -q イメージIDのみ表示 短縮IDの一覧が表示
docker image ls イメージ一覧(新構文) docker imagesと同等
docker search <keyword> Docker Hubを検索 キーワードに一致するイメージ一覧
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Python公式イメージを取得
$ docker pull python:3.12-slim
3.12-slim: Pulling from library/python
...
Status: Downloaded newer image for python:3.12-slim

# ローカルのイメージを確認
$ docker images
REPOSITORY   TAG          IMAGE ID       CREATED       SIZE
python       3.12-slim    abc123def456   2 weeks ago   125MB
nginx        latest       xyz789uvw012   3 weeks ago   188MB

イメージのビルドと管理

コマンド 説明 期待される結果
docker build -t <name>:<tag> . Dockerfileからビルド イメージが作成される
docker build -f <file> . Dockerfile指定でビルド 指定ファイルでビルド
docker build --no-cache . キャッシュを使わずビルド 全レイヤーを再ビルド
docker tag <image> <new-name> イメージにタグ付け 新しいタグが追加
docker push <image> レジストリにプッシュ イメージがアップロード
docker save -o <file>.tar <image> イメージをtarファイルに保存 tarファイルが作成
docker load -i <file>.tar tarファイルからイメージ復元 イメージがロード
docker rmi <image> イメージを削除 イメージが削除される
docker rmi -f <image> 強制削除 使用中でも削除
docker image prune 未使用イメージを削除 danglingイメージが削除
docker image prune -a 全未使用イメージを削除 コンテナ未使用のイメージを削除
1
2
3
4
5
6
7
8
# Dockerfileからイメージをビルド
$ docker build -t my-app:1.0.0 .
[+] Building 15.2s (10/10) FINISHED
 => [internal] load build definition from Dockerfile
 ...
 => => naming to docker.io/library/my-app:1.0.0

# 期待される結果: docker images で my-app:1.0.0 が表示される

イメージの詳細確認

コマンド 説明 期待される結果
docker inspect <image> イメージの詳細情報 レイヤー、環境変数等のJSON
docker history <image> イメージのレイヤー履歴 各レイヤーのコマンドとサイズ
docker image inspect <image> イメージ詳細(新構文) docker inspectと同等
1
2
3
4
5
6
7
# イメージのレイヤー履歴を確認
$ docker history nginx:latest
IMAGE          CREATED       CREATED BY                                      SIZE
a1b2c3d4e5f6   2 weeks ago   CMD ["nginx" "-g" "daemon off;"]                0B
<missing>      2 weeks ago   EXPOSE map[80/tcp:{}]                           0B
<missing>      2 weeks ago   STOPSIGNAL SIGQUIT                              0B
...

ボリュームとネットワーク

ボリューム管理

コマンド 説明 期待される結果
docker volume create <name> ボリュームを作成 名前付きボリュームが作成
docker volume ls ボリューム一覧 全ボリュームを表示
docker volume inspect <name> ボリューム詳細 マウントポイント等を表示
docker volume rm <name> ボリュームを削除 ボリュームが削除される
docker volume prune 未使用ボリュームを削除 未使用のボリュームを一括削除
1
2
3
4
5
6
7
8
# ボリュームを作成して使用
$ docker volume create my-data
my-data

$ docker run -d -v my-data:/app/data nginx
a1b2c3d4e5f6...

# 期待される結果: /app/data のデータがボリュームに永続化される

ネットワーク管理

コマンド 説明 期待される結果
docker network create <name> ネットワークを作成 ブリッジネットワークが作成
docker network create --driver bridge <name> ドライバ指定で作成 指定ドライバのネットワーク作成
docker network ls ネットワーク一覧 全ネットワークを表示
docker network inspect <name> ネットワーク詳細 サブネット、接続コンテナ等
docker network connect <network> <container> コンテナをネットワークに接続 コンテナがネットワークに参加
docker network disconnect <network> <container> ネットワークから切断 コンテナがネットワークから離脱
docker network rm <name> ネットワークを削除 ネットワークが削除される
docker network prune 未使用ネットワークを削除 未使用のネットワークを一括削除
1
2
3
4
5
6
7
8
# カスタムネットワークを作成してコンテナを接続
$ docker network create my-network
abc123def456...

$ docker run -d --name web --network my-network nginx
$ docker run -d --name db --network my-network postgres

# 期待される結果: webコンテナから db という名前で接続可能

システム管理コマンド

クリーンアップ

コマンド 説明 期待される結果
docker system prune 未使用リソースを一括削除 コンテナ、ネットワーク、イメージを削除
docker system prune -a 全未使用リソースを削除 より積極的に削除
docker system prune --volumes ボリュームも含めて削除 ボリュームも一括削除
docker system df ディスク使用量を表示 イメージ、コンテナ、ボリュームの容量
docker container prune 停止コンテナを一括削除 Exitedコンテナを削除
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# ディスク使用量を確認
$ docker system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          10        3         2.5GB     1.8GB (72%)
Containers      5         2         150MB     100MB (66%)
Local Volumes   3         1         500MB     400MB (80%)
Build Cache     20        0         800MB     800MB

# 未使用リソースを削除
$ docker system prune -a
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all images without at least one container associated to them
  - all build cache

Are you sure you want to continue? [y/N] y
Deleted Containers: ...
Total reclaimed space: 2.1GB

Docker Composeコマンド

基本操作

コマンド 説明 期待される結果
docker compose up サービスを起動 compose.yamlに基づいてコンテナ起動
docker compose up -d バックグラウンドで起動 デタッチモードで起動
docker compose up --build ビルドしてから起動 イメージを再ビルドして起動
docker compose down サービスを停止・削除 コンテナ、ネットワークを削除
docker compose down -v ボリュームも含めて削除 データも含めて完全削除
docker compose down --rmi all イメージも含めて削除 関連イメージも削除
docker compose stop サービスを停止(削除しない) コンテナを停止のみ
docker compose start 停止中のサービスを起動 停止したコンテナを再起動
docker compose restart サービスを再起動 全サービスを再起動
1
2
3
4
5
6
7
8
# サービスをバックグラウンドで起動
$ docker compose up -d
[+] Running 3/3
 ✔ Network my-app_default  Created
 ✔ Container my-app-db-1   Started
 ✔ Container my-app-web-1  Started

# 期待される結果: 定義した全サービスが起動

サービスの確認と操作

コマンド 説明 期待される結果
docker compose ps サービス一覧 実行中のサービスを表示
docker compose ps -a 全サービス(停止含む) すべてのサービスを表示
docker compose logs 全サービスのログ 全コンテナのログを表示
docker compose logs -f ログをリアルタイム表示 継続的にログを表示
docker compose logs <service> 特定サービスのログ 指定サービスのログのみ
docker compose exec <service> <command> サービス内でコマンド実行 コマンド結果が表示
docker compose run <service> <command> 新コンテナでコマンド実行 一時コンテナで実行
docker compose top 各サービスのプロセス 全サービスのプロセス一覧
1
2
3
4
5
6
7
8
# webサービスのシェルに接続
$ docker compose exec web /bin/bash
root@abc123:/app# 

# 特定サービスのログを確認
$ docker compose logs -f web
web-1  | 2026/01/01 10:00:00 [notice] 1#1: nginx/1.27.0
web-1  | 2026/01/01 10:00:00 [notice] 1#1: start worker processes

ビルドと設定確認

コマンド 説明 期待される結果
docker compose build サービスをビルド Dockerfileからイメージ作成
docker compose build --no-cache キャッシュなしでビルド 全レイヤーを再ビルド
docker compose build <service> 特定サービスをビルド 指定サービスのみビルド
docker compose pull イメージをプル 最新イメージを取得
docker compose config 設定ファイルを検証・表示 最終的な設定内容を表示
docker compose config --services サービス名一覧 定義済みサービス名を表示
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 設定ファイルを検証
$ docker compose config
name: my-app
services:
  web:
    build:
      context: .
    ports:
      - "8080:80"
  db:
    image: postgres:16
    environment:
      POSTGRES_PASSWORD: secret

compose.yamlの基本構文

Docker Composeで使用するcompose.yamlの基本構文をまとめます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# compose.yaml
services:
  # Webアプリケーションサービス
  web:
    build: .                      # Dockerfileからビルド
    # image: nginx:latest         # または既存イメージを使用
    ports:
      - "8080:80"                 # ポートマッピング
    volumes:
      - ./src:/app                # バインドマウント
      - app-data:/app/data        # 名前付きボリューム
    environment:
      - NODE_ENV=development      # 環境変数
    env_file:
      - .env                      # 環境変数ファイル
    depends_on:
      - db                        # 依存サービス
    networks:
      - app-network               # カスタムネットワーク
    restart: unless-stopped       # 再起動ポリシー

  # データベースサービス
  db:
    image: postgres:16
    volumes:
      - db-data:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: mydb
    healthcheck:                  # ヘルスチェック
      test: ["CMD-SHELL", "pg_isready -U user -d mydb"]
      interval: 10s
      timeout: 5s
      retries: 5
    networks:
      - app-network

# ボリューム定義
volumes:
  app-data:
  db-data:

# ネットワーク定義
networks:
  app-network:
    driver: bridge

期待される結果

上記のcompose.yamldocker compose up -dを実行すると、以下の状態になります。

  • webサービスがビルドされ、ポート8080でアクセス可能
  • dbサービスがPostgreSQL 16で起動
  • 両サービスがapp-networkで接続され、webからdbという名前でDBにアクセス可能
  • データはdb-dataボリュームに永続化

便利なワンライナー集

実務でよく使う便利なコマンドをまとめます。

コンテナ操作の一括処理

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 全コンテナを停止
$ docker stop $(docker ps -q)

# 全コンテナを削除
$ docker rm $(docker ps -aq)

# 停止中のコンテナを一括削除
$ docker container prune -f

# 全イメージを削除(注意)
$ docker rmi $(docker images -q)

# 未使用リソースを完全クリーンアップ
$ docker system prune -a --volumes -f

情報取得

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# コンテナのIPアドレスを取得
$ docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container>

# コンテナのログをファイルに保存
$ docker logs <container> > container.log 2>&1

# イメージのサイズ順にソート
$ docker images --format "{{.Repository}}:{{.Tag}} {{.Size}}" | sort -k2 -h

# 実行中コンテナの環境変数を確認
$ docker exec <container> env

トラブルシューティング

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# コンテナが起動しない場合のログ確認
$ docker logs --tail 50 <container>

# コンテナ内のファイルシステムを確認
$ docker exec -it <container> ls -la /app

# コンテナのリソース使用状況を確認
$ docker stats --no-stream

# ネットワーク接続の確認
$ docker exec <container> ping -c 3 <other-container>

まとめ

本記事では、Dockerの基本コマンドからDocker Composeまで、実務で必要なコマンドを網羅的にまとめました。以下のポイントを押さえておくと、日常的なDocker操作がスムーズになります。

  • コンテナ操作: run, stop, start, rm, execが基本
  • イメージ管理: pull, build, images, rmiで管理
  • Docker Compose: up, down, logs, execで複数コンテナを効率的に管理
  • クリーンアップ: prune系コマンドで不要リソースを定期的に削除

このチートシートをブックマークして、必要なときにすぐ参照できるようにしておくと便利です。

参考リンク