Categories: linux

Dockerコンテナを安全に停止する「docker stop」コマンドの使い方を徹底解説!

Dockerは、開発やテスト環境、本番運用など幅広い用途で活用されているコンテナ型の仮想化ツールです。Dockerを使う中で、コンテナを一時的に停止したい場面はよくあります。そんなときに便利なのが「docker stop」コマンドです。

この記事では、「docker stop」の基本的な使い方から、関連するオプション、注意点、docker killとの違いまでを丁寧に解説します。これからDockerを学び始めた方にも分かりやすく紹介していますので、ぜひ参考にしてください。


docker stopとは?基本の概要

docker stopは、実行中のコンテナを停止するためのコマンドです。このコマンドは、対象となるコンテナに対して**SIGTERM(終了シグナル)**を送り、一定の猶予時間のあと、**SIGKILL(強制終了)**で停止させます。

このプロセスは、コンテナ内で動作しているアプリケーションに終了準備の時間を与えるため、安全に停止できるという特徴があります。


docker stopの基本的な構文と使い方

構文はとてもシンプルです。

docker stop [OPTIONS] CONTAINER [CONTAINER...]

たとえば、my_containerという名前のコンテナを停止するには次のように入力します。

docker stop my_container

複数のコンテナを同時に停止したい場合は、名前をスペースで区切って指定します。

docker stop web_server db_server cache_server

コンテナIDでも指定可能

コンテナの名前ではなく、コンテナIDでも指定できます。以下のように使います。

docker stop 4e5f6c7d89a0

完全なIDでなくても、他と区別できる範囲であれば先頭数文字でも認識されます。


docker psで停止対象のコンテナを確認

停止したいコンテナが現在動作中かどうかを確認するには、次のコマンドを使います。

docker ps

出力結果には、コンテナのID・名前・ステータスなどが表示されます。これをもとに正確な対象を特定できます。


タイムアウト時間の変更方法

docker stopにはオプションとしてタイムアウト秒数を指定することができます。デフォルトでは10秒ですが、-tオプションで任意の秒数に変更可能です。

docker stop -t 30 my_container

この例では、SIGTERM送信後に30秒待ってからSIGKILLが送られます。プロセスがクリーンに終了するのを待ちたいときに便利です。


docker killとの違いは?

よく比較されるのが docker kill コマンドです。両者の違いは停止方法の丁寧さにあります。

コマンド動作内容
docker stopSIGTERM →(待機)→ SIGKILL
docker kill即座にSIGKILL

docker stop はプロセスに「終了準備してね」と伝えたうえで猶予を与えるのに対し、docker kill は問答無用で強制終了するため、処理中のデータが失われるリスクがあります。基本的にはdocker stopを使う方が安全です。


よくあるエラーと対処法

エラー例:Error response from daemon: No such container

このエラーは、指定したコンテナ名やIDが存在しない場合に出ます。スペルミスや、すでに停止済みの可能性があるので、docker ps -aで再確認しましょう。

エラー例:Cannot stop container: permission denied

このエラーは、Dockerをsudoなしで実行していて権限が足りない場合に発生します。次のようにsudoを付けて再試行します。

sudo docker stop my_container

もしくは、ユーザーをdockerグループに追加して再ログインすると、sudoなしでも利用可能になります。


スクリプトでの自動停止も可能

複数のコンテナをまとめて停止したい場合、スクリプトで自動化することも可能です。例えば、起動中のすべてのコンテナを停止したいときは以下のように記述します。

docker stop $(docker ps -q)

このワンライナーは、まず docker ps -q で起動中のコンテナIDを一覧表示し、それらを docker stop に渡してすべて停止します。


コンテナを停止してもデータは消えない?

はい、コンテナの停止は削除ではありませんdocker stopを実行しても、ボリュームやログ、設定はそのまま残ります。再度 docker start を使えば、同じ状態からコンテナを再起動できます。


停止後の状態を確認するには

停止後、確認したい場合は以下のコマンドを実行します。

docker ps -a

ステータス欄に Exited と表示されていれば、正常に停止されています。


トラブル防止のためのベストプラクティス

  • 停止前にログを確認(docker logs [コンテナ名]
  • 重要なサービスには十分な -t 秒数を確保
  • 停止後は docker inspect で状態チェック
  • 停止・削除を自動化する際はバックアップを忘れずに

まとめ

docker stopコマンドは、Dockerコンテナを安全かつ丁寧に停止するための基本かつ重要なコマンドです。

  • SIGTERM → SIGKILL の流れで停止
  • -tオプションでタイムアウト調整が可能
  • docker killは緊急用、基本はstop推奨
  • スクリプトでの自動化も便利
  • 停止は削除ではなく、データもそのまま

コンテナの管理に慣れていくためにも、docker stopの使い方をしっかりマスターしておくことが、スムーズなDockerライフへの第一歩になります。

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。