Docker コマンドチートシート
日常的に使う Docker CLI コマンドを素早く参照:コンテナのライフサイクル、イメージ ビルド、ログ / exec、ネットワーク、ボリューム、Compose、レジストリ、ハウスキーピング — よく使うオプションと実用例をまとめました。
46 コマンド
コンテナのライフサイクル
docker run <image>イメージから新しいコンテナを作成して起動します。
-d デタッチ; -it 対話TTY; --name 名前を割り当て; -p host:container ポート公開; -v ボリューム マウント; -e KEY=VAL 環境変数; --rm 終了時自動削除; --restart=always|unless-stopped|on-failure
docker run -d --name web -p 8080:80 -v $PWD:/usr/share/nginx/html:ro nginx:alpinedocker start|stop|restart <container>既存のコンテナを起動 / 停止 / 再起動します(名前または ID 指定)。
-t N 強制停止までの待ち秒数(既定 10)
docker restart web && docker logs --tail 50 webdocker rm <container>停止中のコンテナを 1 つ以上削除します。
-f 実行中も強制削除; -v 匿名ボリュームも削除
docker rm -f $(docker ps -aq)docker psコンテナを一覧表示します(既定:実行中のみ)。
-a すべて; -q ID のみ; -s サイズ付き; --format Go テンプレート; --filter status|name=...
docker ps --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}'docker rename <c> <new>コンテナの名前を変更します。
docker rename web-1 gateway-webdocker update <c>実行中のコンテナのリソース制限や再起動ポリシーを更新します。
--cpus N; --memory SIZE; --memory-swap SIZE; --restart policy
docker update --cpus 1.5 --memory 1g apidocker wait <c>コンテナが停止するまで待機し、終了コードを表示します。
docker wait db && echo "db stopped"docker top <c>コンテナ内で動作しているプロセスを表示します(ホスト PID 名前空間の ps)。
docker top webログ / Exec
docker logs <c>コンテナのログを取得します。
-f フォロー; --tail N; --since タイムスタンプ|期間; -t タイムスタンプ付き; --details
docker logs -f --tail 200 -t api | grep ERRORdocker exec -it <c> <cmd>実行中のコンテナ内でコマンドを実行します(多くは対話シェル)。
-i STDIN を開いたまま; -t 疑似 TTY 割当; -u ユーザー; -w 作業ディレクトリ; -e KEY=VAL
docker exec -it -u postgres db psql -U postgres app_productiondocker attach <c>ローカルの STDIN/STDOUT を実行中コンテナに接続します(`docker start -i` と同等)。
--sig-proxy シグナル転送; --no-stdin
docker attach web && Ctrl-p Ctrl-q to detachdocker cp <c>:<src> <dest>コンテナとローカル FS 間でファイル / フォルダをコピーします。
-L シンボリック リンクを追跡; -a アーカイブ モード
docker cp db:/var/lib/postgresql/data ./pgdata情報確認
docker inspect <obj>Docker オブジェクト(コンテナ / イメージ / ボリューム / ネットワーク)の詳細を返します。
-f Go テンプレート; --type container|image|network|volume; -s サイズ
docker inspect -f '{{.NetworkSettings.IPAddress}}' webdocker stats実行中コンテナの CPU / メモリ / ネットワーク / ディスク使用量をライブ表示します。
--no-stream 1 回のみ; -a すべて(停止中も); --format; --no-trunc
docker stats --format 'table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}'docker diff <c>コンテナのファイル システムへの変更(追加 / 変更 / 削除)を確認します。
docker diff web | head -20イメージ操作
docker pull <image>[:tag]レジストリからイメージ(またはリポジトリ)をプルします。
-a タグ付きすべて; --platform linux/amd64; -q 静かに; --disable-content-trust
docker pull --platform linux/amd64 nginx:1.27-alpinedocker imagesローカル デーモン上のイメージを表示します。
-a すべて(中間含む); -q ID のみ; --digests; --filter dangling=true
docker images --format '{{.Repository}}:{{.Tag}}\t{{.Size}}' | sort -k2 -h | tail -20docker build <path>Dockerfile からイメージをビルドします。
-t name:tag; -f Dockerfile のパス; --no-cache; --build-arg KEY=VAL; --target stage; --progress=plain; --platform
docker build -t myapp:dev --build-arg NODE_ENV=development --progress=plain .docker tag <src> <dest>既存イメージを指すタグを作成します(別名 / プッシュ先に)。
docker tag myapp:dev registry.example.com/team/myapp:1.2.0docker push <image>イメージ(またはリポジトリ)をレジストリにアップロードします。
--disable-content-trust; -a タグされた全バリアント; --quiet
docker push registry.example.com/team/myapp:1.2.0docker rmi <image>イメージを 1 つ以上削除します。
-f 強制(子イメージがある場合 untag も実施); --no-prune untag された親を保持
docker rmi -f $(docker images --filter 'dangling=true' -q)docker image prune / docker save / docker loadディスクを回収(dangling / N 時間以上前); tar にイメージ保存 / tar からロード。
-a すべて; --filter 'until=24h'; -o file.tar; -i file.tar
docker image prune -af --filter 'until=72h' && docker save -o nginx.tar nginx:alpinedocker history <image>イメージのレイヤ / 中間履歴を表示します。
--no-trunc; --human; -q ID のみ
docker history --no-trunc --human myapp:devネットワーク
docker network lsネットワークを一覧表示します。
--filter driver=bridge|overlay; -q ID のみ; --format
docker network ls --filter driver=bridge --format '{{.Name}}'docker network create <name>サービス検出 / DNS 用のユーザー定義ブリッジ ネットワークを作成します。
--driver bridge|overlay|macvlan; --subnet CIDR; --gateway; --ipv6; --internal
docker network create --driver bridge --subnet 10.20.0.0/24 mynetdocker network connect|disconnect <net> <c>実行中コンテナをネットワークに接続 / 切断します。
--ip IPv4; --ip6 IPv6; --alias ホスト名別名; --link コンテナ
docker network connect mynet webdocker network rm / docker network pruneネットワークを 1 つ以上削除 / 未使用をクリーンアップします。
-f 強制; --filter 'until=24h'
docker network prune -fボリューム / ストレージ
docker volume lsボリュームを一覧表示します。
--filter dangling=true|driver|name; -q ID のみ; --format
docker volume ls --filter dangling=true -qdocker volume create <name>名前付きボリュームを作成します(Docker により管理され、コンテナ UFS 外)。
--driver local; --opt type=nfs; --opt o=addr; --opt device=:/path
docker volume create --driver local --opt type=nfs --opt o=addr=10.0.0.1 --opt device=:/exports/data pgdatadocker volume rm / docker volume pruneボリュームを 1 つ以上削除 / 未使用をクリーンアップします。
-f 強制; --filter 'label=...'
docker volume rm $(docker volume ls -q --filter dangling=true)docker volume inspect <vol>ボリュームの詳細(マウント ポイント、ドライバ、オプション)を表示します。
docker volume inspect pgdata --format '{{.Mountpoint}}'Docker Compose
docker compose upcompose.yaml からサービスをビルド(必要なら) / 作成 / 起動します。
-d デタッチ; --build 強制ビルド; --force-recreate; --pull always|missing|never; -f ファイル
docker compose -f compose.prod.yaml up -d --pull alwaysdocker compose downコンテナとネットワークを停止 / 削除;既定では匿名ボリュームも削除します。
--volumes 名前付きボリュームも; --rmi all|local; --remove-orphans; -t N タイムアウト
docker compose down --rmi local --remove-orphansdocker compose ps / logsCompose サービスの一覧 / ログ表示。
ps -q ID のみ; logs -f フォロー; --tail N; --since
docker compose ps --format json | jq '.[] | {Name, State}' && docker compose logs -f --tail 100 apidocker compose exec / run実行中 / 新規サービス コンテナでコマンドを実行します。
exec --user; exec -e VAR=val; run --rm 終了後にコンテナ削除
docker compose exec db psql -U postgres app && docker compose run --rm api npm run migratedocker compose build / pull / pushCompose プロジェクトのイメージ ビルド / レジストリからのプル / レジストリへのプッシュ。
--no-cache; --pull; --quiet; --parallel
docker compose build --no-cache api workerdocker compose restart / stop / start / scaleサービスのライフサイクル ショートカット;scale でレプリカ数を変更します。
restart <svc>; stop <svc>; start <svc>; scale api=4 worker=2
docker compose restart api && docker compose up -d --scale worker=4レジストリ / Hub
docker login [server]レジストリに認証します。`docker login` で Docker Hub。
-u ユーザー; -p パスワード; --password-stdin
echo "$REGISTRY_TOKEN" | docker login ghcr.io -u myuser --password-stdindocker logout [server]レジストリの認証情報を設定から削除します。
docker logout && docker info 2>/dev/null | headdocker search <term>Docker Hub からイメージを検索します。
--filter stars=N; --limit N; --format
docker search --filter stars=100 --limit 5 postgresシステム / クリーンアップ
docker system dfDocker のディスク使用量(イメージ / コンテナ / ボリューム / ビルド キャッシュ)を表示します。
-v 詳細
docker system df -v | sort -k7 -h | taildocker system prune停止中コンテナ / dangling イメージ / 未使用ネットワークをすべて削除します。
-a すべてのイメージ; --volumes ボリュームも; --filter 'until=24h'; -f 強制
docker system prune -af --volumes --filter 'until=72h'docker builder pruneビルド キャッシュをクリーンします(古いレイヤでディスクを解放)。
-af; --filter 'until=72h'; --keep-storage SIZE
docker builder prune -af --filter 'until=72h'docker context ls / useDocker コンテキストを管理 — マルチホスト / マルチ デーモン(SSH 経由のリモート コンテキストも)。
ls --format json; use myctx
docker context create myhost --docker host=ssh://user@server && docker context use myhost && docker psdocker infoシステム全体の情報を表示;デバッグ時に便利です。
--format
docker info -f '{{.DriverStatus}}'docker port <c>コンテナのポート マッピング(ホスト ↔ コンテナ)を表示します。
docker port web 80チートシート バージョン 1.0.0
Docker Engine 24.0+ に対応