実行中の Docker コンテナを終了する方法

DockerBeginner
オンラインで実践に進む

はじめに

Docker コンテナは、アプリケーションのデプロイと仮想化のための強力なツールです。実行中のコンテナを適切に終了させる方法は、効果的なコンテナ管理にとって不可欠です。このチュートリアルでは、Docker コンテナを停止および削除するためのさまざまなテクニックを探求し、開発者とシステム管理者がクリーンで効率的なコンテナ化された環境を維持するのに役立ちます。

コンテナのライフサイクル

Docker コンテナの状態の理解

Docker コンテナは、存在のさまざまな段階を表す明確に定義されたライフサイクルを持っています。これらの状態を理解することは、効果的なコンテナ管理にとって不可欠です。

コンテナの状態の概要

状態 説明 通常の遷移
作成済み コンテナは初期化されていますが、実行されていません。 開始できます
実行中 コンテナはアクティブに実行されています。 停止または一時停止できます
一時停止 コンテナのプロセスが一時的に停止されています。 再開または停止できます
停止済み コンテナの実行が完了したか、手動で停止されました。 再起動できます
終了済み コンテナの主要なプロセスが終了しました。 削除できます

コンテナのライフサイクルのワークフロー

stateDiagram-v2
    [*] --> Created : docker create
    Created --> Running : docker start
    Running --> Paused : docker pause
    Paused --> Running : docker unpause
    Running --> Stopped : docker stop
    Stopped --> Running : docker restart
    Stopped --> [*] : docker rm

基本的なコンテナライフサイクルのコマンド

コンテナの作成

docker create --name mycontainer ubuntu:22.04

コンテナの起動

docker start mycontainer

コンテナの停止

docker stop mycontainer

主要なライフサイクルの概念

  1. コンテナは軽量で、隔離された環境です
  2. それらはさまざまな状態の間で遷移できます
  3. ライフサイクル管理は、効率的なリソース利用にとって不可欠です

LabEx では、これらのコンテナのライフサイクルの原則を習得して、Docker ワークフローを最適化し、システムのパフォーマンスを向上させることをお勧めします。

コンテナの停止

コンテナ終了方法の理解

Docker は、実行中のコンテナを停止するための複数の方法を提供しており、それぞれに固有のユースケースと動作があります。

停止方法の比較

方法 コマンド 動作 優先終了時間
docker stop docker stop SIGTERM、その後 SIGKILL を送信 デフォルト 10 秒
docker kill docker kill すぐに終了させる 即時終了
docker pause docker pause コンテナプロセスを一時停止 可逆的

優雅なコンテナ終了

docker stop の使用

## 特定のコンテナを停止
docker stop container_name

## 複数のコンテナを停止
docker stop container1 container2 container3

カスタム優先終了時間での停止

## 30 秒の優先終了時間を使用して停止
docker stop -t 30 container_name

高度な終了ワークフロー

flowchart TD
    A[実行中のコンテナ] --> |docker stop| B[SIGTERM 送信]
    B --> C{プロセスが応答するか?}
    C -->|はい| D[優雅なシャットダウン]
    C -->|いいえ| E[SIGKILL 送信]
    E --> F[コンテナ停止]

応答しないコンテナの処理

強制終了

## コンテナをすぐに終了
docker kill container_name

最良の運用方法

  1. 優雅な終了のために docker stop を優先する
  2. 適切な優先終了時間を設定する
  3. コンテナのクリーンアップを体系的に行う

LabEx では、これらの終了テクニックを理解して、コンテナのライフサイクルを効果的に管理することをお勧めします。

終了テクニック

高度なコンテナ終了戦略

シグナルベースの終了方法

flowchart TD
    A[コンテナプロセス] --> |SIGTERM| B[優雅なシャットダウン]
    A --> |SIGKILL| C[即時終了]
    A --> |SIGSTOP| D[プロセス一時停止]

終了シグナルの比較

シグナル 名前 動作 使用例
SIGTERM 終了 優雅なシャットダウン 推奨されるデフォルト
SIGKILL 終了 即時終了 応答しないコンテナの強制停止
SIGSTOP 停止 プロセスの一時停止 一時的な停止

プログラミングによるコンテナ終了

Docker CLI の使用

## カスタムシグナルで終了
docker kill --signal=SIGTERM container_name

## 停止したすべてのコンテナを削除
docker container prune

スクリプトによる終了

#!/bin/bash
## 自動化されたコンテナクリーンアップスクリプト
docker ps -q | xargs -r docker stop
docker container prune -f

複雑な終了シナリオの処理

バッチコンテナ管理

## フィルタでコンテナを停止
docker stop $(docker ps -f "label=environment=production" -q)

タイムアウトベースの終了

## タイムアウト機構で停止
docker stop -t 30 container_name

エラー処理とログ

終了ログの取得

docker stop container_name 2>&1 | tee container_stop.log

最良の運用方法

  1. 優雅な終了シグナルを優先する
  2. 適切なエラー処理を実装する
  3. デバッグのためにログを使用する

LabEx では、堅牢なシステム管理のために、微妙なコンテナ終了テクニックの理解を重視しています。

まとめ

Docker コンテナの終了をマスターすることは、現代のソフトウェア開発と DevOps 実践にとって不可欠なスキルです。コンテナの停止および削除のさまざまな方法を理解することで、システムリソースを効果的に管理し、アプリケーションのライフサイクルを制御し、効率的な Docker ワークフローを維持できます。優雅なシャットダウンコマンドを使用する場合でも、強制終了テクニックを使用する場合でも、これらの戦略は最適なコンテナ管理を実現します。