すべてのチートシート

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:alpine
docker start|stop|restart <container>

既存のコンテナを起動 / 停止 / 再起動します(名前または ID 指定)。

-t N 強制停止までの待ち秒数(既定 10)

docker restart web && docker logs --tail 50 web
docker 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-web
docker update <c>

実行中のコンテナのリソース制限や再起動ポリシーを更新します。

--cpus N; --memory SIZE; --memory-swap SIZE; --restart policy

docker update --cpus 1.5 --memory 1g api
docker 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 ERROR
docker exec -it <c> <cmd>

実行中のコンテナ内でコマンドを実行します(多くは対話シェル)。

-i STDIN を開いたまま; -t 疑似 TTY 割当; -u ユーザー; -w 作業ディレクトリ; -e KEY=VAL

docker exec -it -u postgres db psql -U postgres app_production
docker attach <c>

ローカルの STDIN/STDOUT を実行中コンテナに接続します(`docker start -i` と同等)。

--sig-proxy シグナル転送; --no-stdin

docker attach web && Ctrl-p Ctrl-q to detach
docker 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}}' web
docker 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-alpine
docker images

ローカル デーモン上のイメージを表示します。

-a すべて(中間含む); -q ID のみ; --digests; --filter dangling=true

docker images --format '{{.Repository}}:{{.Tag}}\t{{.Size}}' | sort -k2 -h | tail -20
docker 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.0
docker push <image>

イメージ(またはリポジトリ)をレジストリにアップロードします。

--disable-content-trust; -a タグされた全バリアント; --quiet

docker push registry.example.com/team/myapp:1.2.0
docker 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:alpine
docker 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 mynet
docker network connect|disconnect <net> <c>

実行中コンテナをネットワークに接続 / 切断します。

--ip IPv4; --ip6 IPv6; --alias ホスト名別名; --link コンテナ

docker network connect mynet web
docker 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 -q
docker 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 pgdata
docker 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 up

compose.yaml からサービスをビルド(必要なら) / 作成 / 起動します。

-d デタッチ; --build 強制ビルド; --force-recreate; --pull always|missing|never; -f ファイル

docker compose -f compose.prod.yaml up -d --pull always
docker compose down

コンテナとネットワークを停止 / 削除;既定では匿名ボリュームも削除します。

--volumes 名前付きボリュームも; --rmi all|local; --remove-orphans; -t N タイムアウト

docker compose down --rmi local --remove-orphans
docker compose ps / logs

Compose サービスの一覧 / ログ表示。

ps -q ID のみ; logs -f フォロー; --tail N; --since

docker compose ps --format json | jq '.[] | {Name, State}' && docker compose logs -f --tail 100 api
docker 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 migrate
docker compose build / pull / push

Compose プロジェクトのイメージ ビルド / レジストリからのプル / レジストリへのプッシュ。

--no-cache; --pull; --quiet; --parallel

docker compose build --no-cache api worker
docker 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-stdin
docker logout [server]

レジストリの認証情報を設定から削除します。

docker logout && docker info 2>/dev/null | head
docker search <term>

Docker Hub からイメージを検索します。

--filter stars=N; --limit N; --format

docker search --filter stars=100 --limit 5 postgres

システム / クリーンアップ

docker system df

Docker のディスク使用量(イメージ / コンテナ / ボリューム / ビルド キャッシュ)を表示します。

-v 詳細

docker system df -v | sort -k7 -h | tail
docker 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 / use

Docker コンテキストを管理 — マルチホスト / マルチ デーモン(SSH 経由のリモート コンテキストも)。

ls --format json; use myctx

docker context create myhost --docker host=ssh://user@server && docker context use myhost && docker ps
docker info

システム全体の情報を表示;デバッグ時に便利です。

--format

docker info -f '{{.DriverStatus}}'
docker port <c>

コンテナのポート マッピング(ホスト ↔ コンテナ)を表示します。

docker port web 80

チートシート バージョン 1.0.0

Docker Engine 24.0+ に対応