【保存版】Dockerコンテナ操作の基本コマンド逆引きチートシート
はじめに
Dockerを日常的に使っていても、「あれ、コンテナに入るコマンドなんだっけ?」「起動中のコンテナ一覧はどう見るんだっけ?」と、ふとした瞬間にコマンドを忘れてしまうことはありませんか?
この記事では、Dockerのコンテナ操作で頻繁に使う基本的なコマンドを、目的別に「逆引き」できるチートシートとしてまとめました。自身のWikiで書き溜めていたメモを、Zenn読者の皆さんにも役立つように清書したものです。
コンテナのライフサイクル管理
まずはコンテナの作成から起動、停止、削除まで、基本的なライフサイクルを管理するコマンドです。
run
)
1. コンテナを作成して起動する (新しいコンテナをイメージから作成し、起動します。最もよく使うコマンドの一つです。
# -d: バックグラウンドで実行(デタッチモード)
# -p 8080:80: ホストの8080番ポートをコンテナの80番ポートに接続
# --name my-nginx: コンテナに「my-nginx」という名前を付ける
docker run -d -p 8080:80 --name my-nginx nginx
インタラクティブなシェルを起動したい場合は -it
を使います。
# --rm: コンテナ終了時に自動で削除する
# /bin/bash: 起動後に実行するコマンド
docker run -it --rm centos:7 /bin/bash
start
)
2. 既存のコンテナを起動する (停止しているコンテナを起動します。
docker start <コンテナ名 or コンテナID>
stop
)
3. コンテナを停止する (起動中のコンテナを安全に停止します。
docker stop <コンテナ名 or コンテナID>
restart
)
4. コンテナを再起動する (起動中のコンテナを再起動します。
docker restart <コンテナ名 or コンテナID>
rm
)
5. コンテナを削除する (停止しているコンテナを削除します。
# 複数のコンテナを一度に削除することも可能
docker rm <コンテナ名1> <コンテナ名2>
起動中のコンテナを強制的に削除したい場合は -f
オプションを使います。
docker rm -f <コンテナ名>
コンテナの状態確認
次に、コンテナが今どうなっているのかを確認するためのコマンドです。
ps
)
6. コンテナの一覧を表示する (現在稼働中のコンテナ一覧を表示します。
docker ps
停止中のコンテナも含めて全て表示する場合は -a
オプションを付けます。
docker ps -a
logs
)
7. コンテナのログを出力する (コンテナの標準出力をリアルタイムで確認します。デバッグの際に非常に役立ちます。
# -f: ログをリアルタイムで追跡する (Follow)
docker logs -f <コンテナ名 or コンテナID>
inspect
)
8. コンテナの詳細情報を表示する (IPアドレスやマウントしているボリュームなど、コンテナに関する詳細な情報をJSON形式で取得します。
docker inspect <コンテナ名 or コンテナID>
コンテナ内での操作
exec
)
9. 起動中のコンテナ内でコマンドを実行する (すでに起動しているコンテナの中に入って、シェルを操作したり特定のコマンドを実行したりします。
# -it: インタラクティブなTTY(端末)を確保する
docker exec -it <コンテナ名 or コンテナID> /bin/bash
イメージとリソースの管理
images
)
10. ローカルにあるイメージ一覧を表示する (ローカルにダウンロード済みのDockerイメージ一覧を表示します。
docker images
rmi
)
11. イメージを削除する (不要になったDockerイメージを削除します。
docker rmi <イメージ名 or イメージID>
system prune
)
12. 不要なリソースを一括削除する (停止中のコンテナ、未使用のネットワーク、ダングリングイメージ(どのイメージからも参照されていない中間イメージ)などを一括でクリーンアップします。ディスク容量を確保したいときに便利です。
docker system prune
未使用のボリュームも全て削除したい場合は -a
と --volumes
を付けます。(注意:必要なデータが入ったボリュームまで消さないように!)
docker system prune -a --volumes
おわりに
以上、Dockerコンて操作で日常的によく使うコマンドをまとめてみました。基本的なコマンドだけでも、これだけ覚えておけば日々の開発がぐっとスムーズになるはずです。
この記事で紹介した内容を元に、今後はこちらのブログでより詳細な技術情報を発信していきます。よろしければブックマークやRSS登録をお願いします!
MyNote
Discussion