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>
まずは ps,logs,exec,stop,rm を覚えておけば,日常的な調査と操作を進められる.