Docker で最初に覚える5つのコマンド
管理人 約5分で読めます
Docker を始めたばかりのころは、コマンドの多さに面食らうことがあります。
でも実際の開発では使うコマンドはかなり絞られています。
run、ps、exec、stop、rm ―― この5つを手に馴染ませれば、日常のコンテナ操作はほぼカバーできます。
1. docker run ― コンテナを起動する
最も基本的なコマンドです。指定したイメージからコンテナを作成して起動します。
# Nginx を起動してホストの 8080 番をコンテナの 80 番にマッピングする
docker run -d -p 8080:80 --name my-nginx nginx
# Ubuntu のシェルに入る(対話モード)
docker run -it ubuntu bash
# 環境変数を渡す
docker run -e MYSQL_ROOT_PASSWORD=secret -d mysql:8
よく使うオプションをまとめると:
-d: バックグラウンド(デタッチ)で実行-p ホスト:コンテナ: ポートマッピング--name: コンテナに名前をつける-it: 対話的なシェルに接続する-e KEY=VALUE: 環境変数を設定する
2. docker ps ― 起動中のコンテナを確認する
現在実行中のコンテナ一覧を表示します。
# 起動中のコンテナ一覧
docker ps
# 停止中も含めて全コンテナを表示
docker ps -a
# コンテナ ID だけを表示(スクリプトで使いやすい)
docker ps -q
docker ps の出力には、コンテナID・イメージ名・ステータス・ポートマッピングなどが表示されます。コンテナを操作するときはこのIDまたは名前を使います。
3. docker exec ― 起動中のコンテナに入る
すでに起動しているコンテナの中でコマンドを実行します。デバッグ時に非常によく使います。
# 起動中の Nginx コンテナにシェルで入る
docker exec -it my-nginx bash
# コンテナ内でコマンドを実行して結果だけ取る
docker exec my-nginx nginx -v
# 設定ファイルの中身を確認する
docker exec my-nginx cat /etc/nginx/nginx.conf
-it オプションは exec でも使えます。コンテナの中に入って調査したいときに重宝します。
4. docker stop ― コンテナを停止する
起動中のコンテナにシャットダウンシグナルを送って正常に停止します。
# 名前で停止する
docker stop my-nginx
# コンテナ ID で停止する
docker stop abc123def456
# 複数のコンテナを一度に停止する
docker stop container1 container2 container3
# 全ての起動中コンテナを停止する(注意して使うこと)
docker stop $(docker ps -q)
docker stop はデフォルトで SIGTERM を送り、10秒経っても終了しない場合は SIGKILL を送ります。-t オプションで待機時間を変更できます。
5. docker rm ― コンテナを削除する
停止したコンテナをシステムから削除します。
# 停止中のコンテナを削除する
docker rm my-nginx
# 起動中のコンテナを強制削除する(非推奨)
docker rm -f my-nginx
# 停止中の全コンテナを削除する
docker container prune
# 実行終了したコンテナをまとめて掃除する
docker rm $(docker ps -aq --filter status=exited)
イメージの削除も忘れずに
# イメージ一覧を確認する
docker images
# 特定のイメージを削除する
docker rmi nginx:latest
# 未使用のイメージをまとめて削除する
docker image prune -a
コンテナのライフサイクルまとめ
docker run → [起動中] → docker stop → [停止中] → docker rm → [削除]
↑ ↓
docker start docker start
一度 rm したコンテナは復元できないので、消したくないデータはボリューム(-v オプション)に退避しておくのが鉄則です。
まとめ
run / ps / exec / stop / rm の5つをしっかり覚えれば、日常の Docker 作業は概ね回ります。
最初は手元の Ubuntu や Alpine を起動してシェルに入るところから練習してみましょう。コンテナに慣れてきたら、次は docker-compose に進むとより実践的な構成管理ができるようになります。