Dockerを使っていると,同じコマンドを何度も調べることになる.

オプションまで含めると数が多いので,単体のコンテナやイメージを操作するときによく使うものをまとめておく.Docker Composeのコマンドは別の記事で扱う.

状態を見る

起動中のコンテナを表示する.

1docker ps

停止中を含む,すべてのコンテナを表示する.

1docker ps -a

以降のコマンドにある <container> には,コンテナ名またはコンテナIDを指定する.--name を付けずに起動した場合もコンテナ名は自動生成されるが,名前が分からないときは docker ps または docker ps -a で確認できるコンテナIDを使えばよい.

1docker logs <container-name> 2docker logs <container-id>

コンテナIDはすべて入力する必要はなく,他のコンテナと区別できる範囲の先頭部分を指定できる.通常は docker ps に表示される短いIDをそのまま使える.

ローカルにあるイメージを表示する.

1docker images

Dockerが使っているディスク容量を確認する.

1docker system df

コンテナを起動する

イメージからコンテナを起動する.

1docker run nginx

バックグラウンドで起動する.

1docker run -d nginx

名前とポートを指定して起動する.

1docker run -d \ 2 --name web \ 3 -p 8080:80 \ 4 nginx

この例では,ホストの 8080 番ポートをコンテナの 80 番ポートへ接続する.ブラウザーからは http://localhost:8080 でアクセスできる.

一時的なコンテナを起動し,終了時に自動削除する.

1docker run --rm -it alpine sh

ログを見る

コンテナのログを表示する.

1docker logs <container>

直近100行からログを追い続ける.

1docker logs --tail 100 -f <container>

追跡を終了するときは Ctrl+C を押す.

コンテナの中で操作する

起動中のコンテナでシェルを開く.

1docker exec -it <container> sh

イメージにBashが入っている場合は sh の代わりに bash を使える.軽量なイメージでは bash が入っていないことがある.

シェルへ入らず,コマンドだけ実行することもできる.

1docker exec <container> ls -la /app

ファイルをコピーする

ホストからコンテナへコピーする.

1docker cp ./config.json <container>:/app/config.json

コンテナからホストへコピーする.

1docker cp <container>:/app/output.log ./output.log

停止,再開,削除する

1# 停止する 2docker stop <container> 3 4# 再開する 5docker start <container> 6 7# 再起動する 8docker restart <container> 9 10# 停止したコンテナを削除する 11docker rm <container>

起動中のコンテナを強制的に削除する場合は -f を付ける.通常は docker stop で正常に停止できるか試してから使う.

1docker rm -f <container>

イメージを操作する

Dockerfileからイメージを作る.最後の . はビルドコンテキストを表す.

1docker build -t my-app:local .

イメージを取得,削除する.

1# 取得する 2docker pull nginx:latest 3 4# 削除する 5docker rmi <image>

対象イメージを参照するコンテナが残っている場合は,先にそのコンテナを削除する必要がある.

詳細情報を確認する

コンテナの設定や状態をJSONで表示する.

1docker inspect <container>

IPアドレス,マウント,環境変数,ヘルスチェックなどを詳しく確認できる.

CPUとメモリの使用量を表示する.

1docker stats 2docker stats <container>

不要なデータを片付ける

Dockerを長く使っていると,停止したコンテナ,未使用イメージ,ネットワーク,ビルドキャッシュが蓄積する.削除前に docker system df で使用量を確認しておく.

1# 停止済みコンテナを削除する 2docker container prune 3 4# 未使用イメージを削除する 5docker image prune 6 7# 未使用のビルドキャッシュを削除する 8docker builder prune 9 10# 未使用データをまとめて削除する 11docker system prune

削除範囲を広げる場合は,次のように実行する.

1docker system prune -a --volumes

-a --volumes を付けると,未使用イメージやボリュームも削除対象になる.必要なデータを消さないよう,確認メッセージを読んでから実行する.

最低限これだけ覚える

1docker ps -a 2docker logs --tail 100 -f <container> 3docker exec -it <container> sh 4docker stop <container> 5docker rm <container>

まずは pslogsexecstoprm を覚えておけば,日常的な調査と操作を進められる.

参考