Image(イメージ)操作
| コマンド |
説明 |
よく使うオプション |
docker pull |
イメージをレジストリから取得 |
:tag(タグ指定) |
docker push |
イメージをレジストリに送信 |
なし |
docker images / docker image ls
|
イメージ一覧を表示 |
-a(中間も含む), -q(IDのみ) |
docker build |
Dockerfileからイメージをビルド |
-t(タグ), -f(Dockerfile指定), --no-cache
|
docker tag |
既存イメージに別タグを付与 |
なし |
docker rmi / docker image rm
|
イメージを削除 |
-f(強制) |
docker image prune |
未使用イメージを一括削除 |
-a(タグなしも含めすべて) |
docker history |
イメージのレイヤー履歴を表示 |
--no-trunc(省略しない) |
docker save |
イメージをtarファイルに出力 |
-o [ファイル] |
docker load |
tarファイルからイメージを読み込み |
-i [ファイル] |
docker inspect |
イメージの詳細情報をJSON表示 |
なし |
Container(コンテナ)操作
起動・停止・削除
| コマンド |
説明 |
よく使うオプション |
docker run |
イメージから新規コンテナを作成して起動 |
-d, -it, --name, -p, -v, -e, --rm, --network, --restart
|
docker start |
停止中のコンテナを起動 |
-a(アタッチ) |
docker stop |
コンテナを停止(SIGTERM) |
-t [秒](タイムアウト) |
docker restart |
コンテナを再起動 |
-t [秒] |
docker kill |
コンテナを強制停止(SIGKILL) |
-s [シグナル] |
docker pause / docker unpause
|
プロセスを一時停止 / 再開 |
なし |
docker rm |
コンテナを削除 |
-f(起動中も強制), -v(ボリュームも削除) |
docker container prune |
停止中コンテナを一括削除 |
なし |
docker run の主要オプション
| オプション |
意味 |
-d |
デタッチモード(バックグラウンド実行) |
-it |
-i(標準入力接続)+ -t(TTY割当)。シェル起動の定番 |
--name [名前] |
コンテナ名を指定 |
-p ホスト:コンテナ |
ポート公開(例: -p 8080:80) |
-v ホスト:コンテナ |
ボリュームマウント |
-e KEY=VALUE |
環境変数を設定 |
--env-file [ファイル] |
環境変数をファイルから読み込み |
--rm |
終了時に自動削除 |
--network [名前] |
接続先ネットワークを指定 |
--restart [policy] |
再起動ポリシー(no / on-failure / always / unless-stopped) |
-w [パス] |
作業ディレクトリを指定 |
-u [ユーザー] |
実行ユーザーを指定 |
状態確認・操作
| コマンド |
説明 |
よく使うオプション |
docker ps |
起動中コンテナを一覧表示 |
-a(停止中も), -q(IDのみ), --filter
|
docker logs |
コンテナのログを表示 |
-f(追従), --tail [数], --since [時間]
|
docker exec |
起動中コンテナでコマンド実行 |
-it(対話シェル), -u(ユーザー指定) |
docker attach |
起動中コンテナの標準入出力に接続 |
なし |
docker top |
コンテナ内のプロセス一覧 |
なし |
docker stats |
リソース使用量をリアルタイム表示 |
--no-stream(1回だけ) |
docker inspect |
コンテナ詳細をJSON表示 |
--format(テンプレート) |
docker cp |
ホスト⇔コンテナ間でファイルコピー |
なし |
docker rename |
コンテナ名を変更 |
なし |
docker commit |
コンテナの状態から新しいイメージを作成 |
-m [メッセージ], -a [作者]
|
docker diff |
コンテナのファイル変更を表示 |
なし |
docker port |
公開ポートを表示 |
なし |
attach と exec の使い分け: attach は既存プロセス(PID 1)に繋ぐので Ctrl+C でコンテナが落ちる。実務で使うのはほぼ exec です。
Network(ネットワーク)操作
| コマンド |
説明 |
よく使うオプション |
docker network ls |
ネットワーク一覧を表示 |
なし |
docker network create |
ネットワークを作成 |
--driver [bridge/overlay], --subnet
|
docker network rm |
ネットワークを削除 |
なし |
docker network inspect |
ネットワーク詳細を表示 |
なし |
docker network connect |
コンテナをネットワークに接続 |
--ip [IP] |
docker network disconnect |
コンテナをネットワークから切断 |
-f(強制) |
docker network prune |
未使用ネットワークを一括削除 |
なし |
注意点として、デフォルトの bridge ネットワークではコンテナ名による名前解決ができません。複数コンテナを連携させるなら、必ず docker network create でカスタムネットワークを作る必要があります(Composeなら自動でやってくれます)。
Volume(ボリューム)操作
| コマンド |
説明 |
よく使うオプション |
docker volume ls |
ボリューム一覧を表示 |
なし |
docker volume create |
ボリュームを作成 |
--driver |
docker volume rm |
ボリュームを削除 |
-f(強制) |
docker volume inspect |
ボリューム詳細を表示(保存先パスなど) |
なし |
docker volume prune |
未使用ボリュームを一括削除 |
-a(全て) |
マウント方法の比較
| 種類 |
書き方 |
用途 |
| named volume |
-v mydata:/path |
DB等のデータ永続化。Docker管理 |
| bind mount |
-v $(pwd)/data:/path |
開発時のソース同期。ホスト依存 |
| tmpfs |
--tmpfs /path |
メモリ上の一時領域 |
Docker Compose
docker-compose(ハイフン版・v1)は非推奨です。docker compose(スペース版・v2)を使います。
| コマンド |
説明 |
よく使うオプション |
docker compose up |
サービスを起動 |
-d(バックグラウンド), --build(再ビルド) |
docker compose down |
サービス停止 + コンテナ削除 |
-v(ボリュームも削除), --rmi all(イメージも削除) |
docker compose start / stop
|
サービスの起動 / 停止のみ |
なし |
docker compose restart |
サービスを再起動 |
なし |
docker compose ps |
サービスの状態一覧 |
-a(停止中も) |
docker compose logs |
サービスのログ表示 |
-f(追従), --tail [数]
|
docker compose exec |
起動中サービスでコマンド実行 |
-it |
docker compose run |
使い捨てコンテナでコマンド実行 |
--rm |
docker compose build |
サービスをビルド |
--no-cache, --pull
|
docker compose pull |
イメージを取得 |
なし |
docker compose config |
compose.yamlを検証・整形表示 |
なし |
docker compose top |
サービスのプロセス一覧 |
なし |
システム管理・掃除
| コマンド |
説明 |
よく使うオプション |
docker system df |
Dockerが使っているディスク容量を表示 |
-v(詳細) |
docker system prune |
停止コンテナ・ダングリングイメージ・未使用ネットワークを一括削除 |
-a(タグ付きイメージも), --volumes(ボリュームも) |
docker system info |
Docker環境の情報を表示 |
なし |
docker version |
Dockerのバージョンを表示 |
なし |
docker login |
レジストリにログイン |
-u [ユーザー] |
docker logout |
レジストリからログアウト |
なし |
docker events |
リアルタイムでイベントを表示 |
--since, --until
|
docker system prune -a --volumes は強力ですが、本番環境ではDB用ボリュームまで吹き飛ばす危険があるので使用厳禁です。
ビルド(buildx / BuildKit)
Docker v23以降は BuildKit が標準ビルダーです。マルチプラットフォームビルドが必要な場合は buildx を使います。
| コマンド |
説明 |
よく使うオプション |
docker buildx ls |
ビルダー一覧を表示 |
なし |
docker buildx create |
新しいビルダーを作成 |
--name, --use
|
docker buildx build |
マルチプラットフォーム対応ビルド |
--platform linux/amd64,linux/arm64, --push, --load
|
docker buildx du |
ビルドキャッシュの容量を表示 |
なし |
docker buildx prune |
ビルドキャッシュを削除 |
-a(全て) |
docker buildx imagetools inspect |
マルチアーキテクチャイメージの確認 |
なし |
Apple Silicon (M1/M2) Macで本番Linux(x86_64)向けイメージを作る場合は --platform linux/amd64 の指定が必須です。
トラブルシューティング用コマンド
症状別に最初に叩くべきコマンドの早見表です。
| 症状 |
確認コマンド |
| コンテナが起動しない |
docker logs [name] |
| Exit Codeを知りたい |
docker inspect [name] --format '{{.State.ExitCode}}' |
| ポート衝突 |
docker ps でポート確認、ホスト側は lsof -i :8080
|
| 外部に繋がらない |
docker exec -it [name] sh → curl / ping
|
| イメージサイズが大きすぎる |
docker history [image] |
| ディスクが足りない |
docker system df → docker system prune
|
| ネットワーク疎通確認 |
docker network inspect [network] |
| 環境変数の確認 |
docker inspect [name] --format '{{.Config.Env}}' |
参考リンク