【Docker基礎】Dockerコンテナのライフサイクル

Docker コンテナは、作っては捨てる という概念が大きな特徴です。
 サーバーやアプリケーションを長く使い続けるイメージとは違い、Docker では新しいバージョンが出たら新規コンテナを作成し、古いコンテナを破棄する、という流れを前提として運用します。これを押さえておくと、Docker 技術をスムーズに活用できるようになるでしょう。

コンテナは「長く大事に使わない」?

 従来のサーバー運用だと、一度セットアップした環境をできるだけ長く使い続け、ソフトウェアをアップデートしながら維持するのが一般的でした。
 しかし Docker では、「更新が必要なら、新しいイメージから新たなコンテナを起動し、古いコンテナは破棄する」 という手法が主流です。

  • 作る → 起動する → 停止する → 破棄する
  • 次々に新バージョンのコンテナを立ち上げ、旧コンテナを捨てていく。

なぜ「作っては捨てる」運用が可能なのか

  1. コンテナの作成が簡単
    ・イメージさえあればコマンド一つでコンテナを作れる。
    ・構築に手間と時間がかからないため、「その都度作る」やり方が現実的
  2. 保守やアップデートの効率化
    ・大量のコンテナを一斉にアップデートするよりも、新しいバージョンのコンテナを起動して切り替えるほうが楽
    ・古いコンテナは停止し、破棄すればよい。
  3. 障害時の切り分けが容易
    ・コンテナが壊れても、新しいコンテナを立ち上げれば元に戻せる。
    ・迅速なロールバックができ、影響範囲も最小限に抑えられる。

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

Docker コンテナのライフサイクルは、大まかに下記の 4 つのステップで表せます。

  1. 作成(Create)
    docker create コマンドや docker run コマンドでイメージからコンテナを生成
  2. 起動(Start/Run)
    ・コンテナを起動してアプリケーションを稼働
    ・すでに作成済みコンテナを起動する場合は docker start、イメージから同時に作成・起動するには docker run を利用
  3. 停止(Stop)
    docker stop <コンテナ名 or ID> を使ってアプリケーションを停止
  4. 破棄(Remove)
    docker rm <コンテナ名 or ID> で不要になったコンテナを削除(破棄)

 このサイクルを繰り返しながら、常に最新・最適な状態のコンテナを稼働させるのが Docker の運用スタイルです。

データの保存はどうする?

 「コンテナは捨てる」という運用だと、アプリケーションが生成・更新するデータはどうなるのか気になるかもしれません。実はコンテナを破棄すると、基本的にはコンテナ内部に保存したデータも消えてしまいます。

  • 永続化が必要なデータは Docker Volume(ボリューム) や Bind Mount(バインドマウント) としてホスト側に保存
  • この仕組みにより、コンテナを破棄してもデータが消えないようにできる。

まとめ

  • Dockerコンテナのライフサイクル
    1. 作成 → 2. 起動 → 3. 停止 → 4. 破棄
  • 「作っては捨てる」 という運用スタイルで、常に新しいコンテナを手軽に用意できる
  • 保守・アップデート も、コンテナごと差し替えることで効率化
  • 重要なデータはコンテナ内に置かず、ホストやボリュームに置く ことで消えないようにする

 Docker の考え方では、コンテナを長期間使い続けるよりも 都度作り直したほうが効率が良い という発想が基本です。次のコンテンツでは、具体的なデータ管理方法をさらに深掘りしていきます。