Skip to content

Dockerコマンド 解説

日々使うDockerコマンドを用途別にまとめました。イメージのビルドと移動、コンテナの起動と停止、フラグによるdocker runの調整、ログと統計の確認、コンテナ内部へのアクセス、ファイルのコピーとレジストリとのやり取り、ボリュームとネットワークの管理、Composeの操作、ディスク容量の回収までを網羅します。

Dockerは2つのオブジェクトで成り立ちます。イメージ(読み取り専用のテンプレート)とコンテナ(イメージの実行インスタンス)です。イメージをビルドまたはプルし、コンテナとして実行し、様子を確認し、そして後片付けします。ほとんどの人はさらにComposeを使ってマルチコンテナアプリを宣言します。以下のコマンドにはすべて短い形式があります。長い形式は、その方が明確な場合にだけ示しています。

リファレンステーブル · 75 項目
75 of 75 rows
ビルド
Dockerfileからイメージをビルドします。docker build -t app:1.0 .
キャッシュされたレイヤーを無視して、イメージを最初からビルドし直します。docker build --no-cache -t app:1.0 .
multi-stage Dockerfileの指定したstageまでだけをビルドします。docker build --target deps -t app:deps .
BuildKitを駆動するbuildxプラグイン経由でイメージをビルドします。docker buildx build -t app:1.0 .
1つのイメージを複数のCPUアーキテクチャ向けにビルドします。docker buildx build --platform linux/amd64,linux/arm64 -t app:1.0 --push .
イメージ
レジストリからイメージをダウンロードします。docker pull node:20
ローカルに保存されたイメージを一覧表示します。docker images
同じイメージを指す新しいタグを作成します。docker tag app:1.0 app:latest
ローカルのイメージを1つ以上削除します。docker rmi app:1.0
コンテナのライフサイクル
イメージからコンテナを作成して起動します。docker run -p 8080:3000 app
起動せずにコンテナを作成します。docker create --name web app
停止済みのコンテナを起動します。docker start web
実行中のコンテナをグレースフルに停止します。docker stop web
コンテナの停止と起動を1ステップで行います。docker restart web
グレースフルなシャットダウンを待たずにコンテナを強制停止します。docker kill web
コンテナ内のすべてのプロセスを凍結します。docker pause web
一時停止中のコンテナのプロセスを再開します。docker unpause web
コンテナが停止するまでブロックし、終了コードを出力します。docker wait web
実行中のコンテナを一覧表示します。-aを付けると停止済みも含まれます。docker ps -a
既存のコンテナに新しい名前を付けます。docker rename web web-old
コンテナのリソース制限や再起動ポリシーを変更します。docker update --restart=unless-stopped web
停止済みのコンテナを削除します。docker rm web
runフラグ
コンテナをバックグラウンドで実行し、そのIDを出力します。docker run -d -p 8080:80 app
コンテナのポートをホストのポートで公開します。docker run -p 8080:80 app
ホストのフォルダーまたは名前付きボリュームをコンテナにマウントします。docker run -v app-data:/data app
コンテナ内に環境変数を設定します。docker run -e MODE=prod app
後続のコマンドで使う固定名をコンテナに付けます。docker run --name web app
終了時にコンテナを削除します。docker run --rm app
指定したネットワーク上でコンテナを起動します。docker run --network net app
いつコンテナを再起動するかをDockerに指示します。docker run --restart unless-stopped app
端末を割り当て、stdinを開いたままにして対話セッションを可能にします。docker run -it alpine sh
イメージのentrypointを独自のコマンドに置き換えます。docker run --entrypoint sh app
コンテナが使えるメモリまたはCPUシェアに上限を設けます。docker run --memory 512m --cpus 0.5 app
状態の確認
コンテナのstdoutとstderrを読みます。-fは到着する新しい出力に追随します。docker logs -f web
コンテナまたはイメージの低レベルな設定と状態を表示します。docker inspect web
Goテンプレートでinspectから1つのフィールドを取り出します。docker inspect --format '{{.State.Status}}' web
コンテナが公開しているホストポートを一覧表示します。docker port web
イメージと比較して、コンテナが変更したファイルを表示します。docker diff web
実行中コンテナのCPU・メモリ・ネットワークをライブで表示します。docker stats
コンテナ内で実行中のプロセスを一覧表示します。docker top web
デーモンからのDockerイベントを発生時に合わせてストリーミングします。docker events --filter type=container
イメージ、コンテナ、ボリューム、キャッシュが使うディスク容量を表示します。docker system df
システム全体のDocker設定と状態を表示します。docker info
execとattach
実行中のコンテナ内でコマンドを実行します。docker exec -it web sh
端末をコンテナのメインプロセスに接続します。docker attach web
ファイルとレジストリ
コンテナとローカルファイルシステム間でファイルをコピーします。docker cp web:/app/logs ./logs
CLIからレジストリにサインインします。docker login
レジストリからサインアウトします。docker logout
ローカルのイメージをレジストリにアップロードします。docker push user/app:1.0
イメージをtarファイルに書き出します。docker save -o app.tar app:1.0
tarファイルからイメージを読み込みます。docker load -i app.tar
コンテナのファイルシステムをtarファイルに書き出します。docker export web > web.tar
tarファイルシステムからイメージを作成します。docker import web.tar web:snap
コンテナの現在の状態を新しいイメージに変えます。docker commit web app:snap
ボリューム
永続データ用の名前付きボリュームを作成します。docker volume create data
ボリュームを一覧表示します。docker volume ls
ボリュームを削除します。docker volume rm data
ネットワーク
ネットワークを一覧表示します。docker network ls
コンテナ同士が通信できるようネットワークを作成します。docker network create net
実行中のコンテナをネットワークに接続します。docker network connect net web
Compose
compose.yamlのサービスをビルド、(再)作成、起動します。-dはバックグラウンドで実行を続けさせます。docker compose up -d
サービスを起動する前に、そのイメージを再ビルドします。docker compose up --build -d
実行中のサービスコンテナ内でコマンドを実行します。docker compose exec api sh
1つ以上のサービスのログを追跡します。docker compose logs -f api
Composeが管理するサービスコンテナを一覧表示します。docker compose ps
サービスコンテナを削除せずに停止します。docker compose stop
サービスコンテナを再起動します。docker compose restart api
コンテナとネットワークを停止して削除します。-vは名前付きボリュームも削除します。docker compose down
マージと環境変数の置換後の最終Compose設定を表示します。docker compose config
クリーンアップ
停止済みコンテナ、danglingイメージ、未使用のネットワークを削除します。-a --volumesは未使用のイメージとボリュームも削除します。docker system prune -af
停止済みのコンテナをすべて削除します。docker container prune
未使用またはdanglingのイメージを削除します。docker image prune -a
どのコンテナも使っていないボリュームを削除します。docker volume prune
どのコンテナも使っていないネットワークを削除します。docker network prune
キャッシュされたビルドレイヤーを削除します。docker builder prune