type
status
date
slug
summary
tags
category
icon
password

Dockerの永続ストレージの利用

学習目標

このセクションを完了することで、学生は以下のことができるようになります:
  • コンテナの再起動を経てもアプリケーションデータを保持するための永続ストレージの利用方法。
  • ホストディレクトリをコンテナのボリュームとして使用するための設定。
  • コンテナ内でボリュームをマウントする方法。

永続的なストレージの準備

Dockerコンテナのストレージは「エフェメラル(揮発性)」と呼ばれ、コンテナが削除されるとその内容は保持されません。コンテナ化されたアプリケーションは、常に空のストレージから始まることを前提に設計されており、そのためコンテナの作成や削除は比較的軽量な操作とされています。
ただし、データベースなど、再起動後もデータを保持する必要があるアプリケーションには、エフェメラルストレージは不十分です。これらのアプリケーションをサポートするためには、コンテナに永続ストレージを提供する必要があります。

コンテナストレージの構造

コンテナイメージは「不変(immutable)」でレイヤー構造を持ち、変更されることはありませんが、上位のレイヤーが下位のレイヤーを上書きする形で構成されています。
  • 実行中のコンテナは、ベースとなるコンテナイメージに新しいレイヤーを加え、このレイヤーがコンテナのストレージとなります。
  • 初めてこのレイヤーはコンテナ内で唯一の読み書き可能なストレージとなり、作業用ファイル、一時ファイル、ログファイルなどがここに格納されます。これらは「揮発的」と見なされ、失われてもアプリケーションは問題なく動作します。
  • コンテナストレージレイヤーは実行中のコンテナ専用であるため、別のコンテナを同じベースイメージから作成すると、新たな読み書き可能なレイヤーが作成されます。
このように、コンテナがデータを永続化するためには、永続ストレージを提供する別の手段(ボリュームやバインドマウントなど)を使う必要があります。
notion image

1. コンテナのストレージは一時的

コンテナは、短期間の作業や実行を目的としたものです。そのため、コンテナ内のデータは永続的に保存されるわけではありません。コンテナが停止したり再作成されると、そのデータは失われる可能性があります。

2. 永続的なデータ保存が必要な場合

コンテナ内にデータを保存する場合、特にデータベースやアプリケーションデータなどの永続的な保存が必要な場合は、コンテナのストレージを直接使うのは不適切です。代わりに、ホストマシンのディレクトリをコンテナにマウントして、データを保存することをお勧めします。

3. ストレージの回収

Dockerは、停止したコンテナのデータをしばらく保持しますが、新しいコンテナを作成するためにそのストレージを回収することがあります。もし、古いコンテナを早めに削除したい場合は、以下のコマンドで削除できます:
  • docker ps -a(停止したコンテナを一覧表示)
  • docker rm <コンテナID>(コンテナとそのストレージを削除)

4. ホストディレクトリを使ってデータを永続化

ホストマシンのディレクトリをコンテナに「バインドマウント」して、データを永続化できます。これにより、コンテナが再起動したり停止しても、データはホストマシンに保存され、他のコンテナでも利用できるようになります

例:MySQLコンテナでデータを永続化する手順

  1. ホストディレクトリを作成:
    1. 適切な権限を設定(コンテナのユーザーが書き込みできるように):
      1. SELinuxの設定(Red Hat系のOSで必要な設定):
        1. コンテナにホストディレクトリをマウント: これにより、ホストマシンの/var/dbfilesディレクトリがコンテナ内の/var/lib/mysqlにマウントされ、データベースのデータが永続的に保存されます。

          まとめ

          • コンテナのストレージは一時的であり、データが失われることがあります。
          • ホストディレクトリを使ってデータを保存することで、コンテナ停止後もデータを保管できます。
          • これを実現するためには、ホストディレクトリの権限や設定を適切に行うことが重要です。
           
          08- 第3章: コンテナの管理-2:MySQLコンテナの管理の演習10- 第3章: コンテナの管理-4: MySQL データベースの永続化の演習
          Loading...
          minami
          minami
          一个普通的干饭人🍚
          Announcement

          🎉 ブログへようこそ 🎉

          notion image
          名前:みなみ独立事務所
          性別:男
          国籍:China
          完全独学だけで基本情報をはじめ31個の資格を仕事をしながら合格。 現在はIT会社の技術担当や、ブログの執筆や学習支援などを手掛けています。 独学で合格できる学習法、勉強法、試験対策を配信します!

          📚 主な内容

          💻 IT・システム開発
          🏠 不動産 × 宅建士
          🎓 MBA 学習記録

          🔍 コンテンツの探し方

          現在、サイトのデザインはシンプルなため、情報がやや探しにくいかもしれません。
          気になるテーマを探す際は、タグ検索の利用をおすすめします。