【初心者向け】Dockerコンテナをkillコマンドで停止する方法

Docker

「Dockerコンテナが動かなくなって、止められない…」
「処理が重くて、コンテナを強制的に止めたい」

そんなときに役立つのが、docker killコマンドです。

この記事では、Dockerを使い始めたばかりの方にも分かりやすく、コンテナを安全に停止する方法を説明します。

スポンサーリンク

docker killコマンドってなに?

機能の説明

docker killコマンドは、動いているDockerコンテナをすぐに止めるためのコマンドです。

パソコンでソフトが固まったとき、「強制終了」をすることがありますよね。docker killも同じで、コンテナが反応しなくなったときに「強制終了」をするためのコマンドです。

docker killの特徴

  • コンテナをすぐに止められる
  • 固まったコンテナにも効果的
  • 緊急時に使える
  • 使い方を間違えると危険

こんなときに使います

コンテナが反応しなくなったとき 処理が重くて、普通の方法では止められない

すぐにコンテナを止めたいとき テストやデバッグで、手早く作業したい

エラーが起きて動かないとき プログラムにバグがあって、正常に止まらない

docker killコマンドの基本的な使い方

基本的な書き方

docker killコマンドは、次のように書きます:

docker kill コンテナ名

または

docker kill コンテナID

実際に使ってみよう

例1:コンテナ名で停止する

説明 「my_app」という名前のコンテナを停止してみましょう。

コマンド例

docker kill my_app

実行結果

my_app

解説

  • 成功すると、停止したコンテナの名前が表示されます
  • コンテナはすぐに停止します

例2:コンテナIDで停止する

説明 コンテナIDを使って停止することもできます。

まず、動いているコンテナを確認

docker ps

実行結果の例

CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
abc123def456   nginx     ...       1 hour    Up        80:80     my_nginx

コンテナIDを使って停止

docker kill abc123def456

注意点

  • コンテナIDは最初の数文字だけでもOK(例:abc123
  • 重複しない範囲で短縮できます

複数のコンテナをまとめて停止

説明 複数のコンテナを一度に停止することもできます。

コマンド例

docker kill container1 container2 container3

すべてのコンテナを停止

docker kill $(docker ps -q)

解説

  • docker ps -q:動いているコンテナのIDをすべて取得
  • $():取得したIDをdocker killコマンドに渡す

docker stopコマンドとの違い

それぞれの特徴

コマンド停止方法停止までの時間安全性
docker stop丁寧に停止少し時間がかかる安全
docker kill強制的に停止すぐに停止注意が必要

docker stopの動作

docker stopコマンドの流れ

  1. コンテナに「終了してください」と丁寧にお願い
  2. 10秒間待つ
  3. 10秒経っても止まらなければ、強制終了

コマンド例

docker stop my_app

docker killの動作

docker killコマンドの流れ

  1. コンテナに「すぐに止まれ!」と強制命令
  2. 即座に停止

コマンド例

docker kill my_app

どちらを使うべき?

通常の場合:docker stop

  • データベースのデータを保存中
  • ログファイルを出力中
  • 重要な処理を実行中

緊急の場合:docker kill

  • コンテナが固まって反応しない
  • テスト環境で手早く作業したい
  • エラーが起きて正常に止まらない

より詳しい使い方

シグナルを指定した停止

説明 docker killでは、停止の仕方を詳しく指定できます。

穏やかに停止(SIGTERM)

docker kill --signal=SIGTERM my_app

強制停止(SIGKILL)

docker kill --signal=SIGKILL my_app

何も指定しない場合

docker kill my_app

※ 自動的にSIGKILLが使われます

シグナルの種類と特徴

シグナル意味動作使う場面
SIGTERM正常終了アプリが自分で終了処理安全に止めたいとき
SIGKILL強制終了問答無用で停止緊急時、固まったとき
SIGINT割り込みCtrl+Cと同じ手動で止めるとき

安全に使うための注意点

データの保存について

危険な例

# データベースが書き込み中なのに強制停止
docker kill database_container

安全な例

# まず丁寧に停止を試す
docker stop database_container

# それでも止まらなければ強制停止
docker kill database_container

確認してから実行

動いているコンテナを確認

docker ps

停止したいコンテナが正しいか確認

docker inspect container_name

重要なデータがないか確認

docker logs container_name

バックアップを取る習慣

データのバックアップ

# ボリュームの確認
docker volume ls

# データのバックアップ
docker cp container_name:/data ./backup/

よくある使用場面とコマンド例

開発・テスト環境での使用

Webアプリのテスト

# アプリを起動
docker run -d --name test_app my_web_app

# テスト実行
# ... テスト作業 ...

# テスト終了後、すぐに停止
docker kill test_app

# コンテナを削除
docker rm test_app

固まったコンテナの対処

手順

  1. まず状況を確認
docker ps
docker logs problematic_container
  1. 穏やかな停止を試す
docker stop problematic_container
  1. 30秒待っても止まらなければ強制停止
docker kill problematic_container

一括処理

開発環境のリセット

# すべてのコンテナを停止
docker kill $(docker ps -q)

# 停止したコンテナを削除
docker rm $(docker ps -aq)

# 使われていないイメージを削除
docker image prune

トラブルシューティング

コマンドが効かない場合

「No such container」エラー

Error response from daemon: No such container: my_app

原因と対策

  • コンテナ名やIDが間違っている
  • コンテナがすでに停止している

確認方法

# 動いているコンテナを確認
docker ps

# すべてのコンテナを確認(停止中も含む)
docker ps -a

権限エラーが出る場合

「Permission denied」エラー

Got permission denied while trying to connect to the Docker daemon socket

対策

# sudoを付けて実行
sudo docker kill my_app

# または、ユーザーをdockerグループに追加
sudo usermod -aG docker $USER

よくある質問と答え

Q. docker killとdocker stopのどちらを使えばいいですか? A. 基本的にはdocker stopを使い、それでも止まらない場合にdocker killを使うのがおすすめです。

Q. docker killでデータが消えることはありますか? A. コンテナ内の一時的なデータは消える可能性があります。重要なデータは事前にボリュームやバックアップで保護しましょう。

Q. 本番環境でdocker killを使っても大丈夫ですか? A. 緊急時以外は避けましょう。本番環境では慎重な停止(docker stop)を推奨します。

Q. docker killで止めたコンテナは自動で再起動しますか? A. 再起動ポリシーが設定されていれば、自動で再起動する場合があります。

まとめ:適切なコンテナ停止で安全なDocker運用

docker killコマンドは、緊急時に役立つ強力なツールです。

今日覚えたこと

  • 基本構文: docker kill コンテナ名
  • 使い分け: 通常はdocker stop、緊急時にdocker kill
  • 安全性: 強制停止はデータ消失のリスクあり
  • 確認: 実行前にコンテナの状態をチェック

まずはdocker stopから覚えましょう
docker killは「最後の手段」として使うのがベストです。

コメント

タイトルとURLをコピーしました