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にマウントされ、データベースのデータが永続的に保存されます。

          まとめ

          • コンテナのストレージは一時的であり、データが失われることがあります。
          • ホストディレクトリを使ってデータを保存することで、コンテナ停止後もデータを保管できます。
          • これを実現するためには、ホストディレクトリの権限や設定を適切に行うことが重要です。
           
          相关文章
          RedHat EX200 本番近い試験問題集
          Lazy loaded image
          RedHat EX200 本番試験問題集(有料版)
          Lazy loaded image
          82- 第17章:導入総復習-3:OpenShiftにマルチコンテナデプロイのラボ
          Lazy loaded image
          81- 第17章:導入総復習-2:docker,KubernetesおよびOpenShiftのラボ
          Lazy loaded image
          80- 第17章:導入総復習-1:総合レビュー
          Lazy loaded image
          79- 第16章:OpenShiftの管理と監視-8:ラボ
          Lazy loaded image
          10- 第3章: コンテナの管理-4: MySQL データベースの永続化の演習08- 第3章: コンテナの管理-2:MySQLコンテナの管理の演習
          Loading...
          みなみ
          みなみ
          一个普通的干饭人🍚
          最新发布
          35条書面-64問-1
          2025年6月13日
          TOKYO自習島
          2025年6月10日
          平成26年秋期 午後問1
          2025年6月6日
          令和5年秋期 午後問1
          2025年6月6日
          令和2年秋期 午後問1
          2025年6月6日
          業務上の規制-87問-1
          2025年6月4日
          公告

          🎉 欢迎访问我的博客 🎉

          🙏 感谢您的支持 🙏

          📅 本站自 2024年9月1日 建立,致力于分享在 IT・MBA・不动产中介 等领域的学习与实践,并推动 学习会 的自主开展。
          📖 博客语言使用比例
          🇯🇵 日语 90% 🇨🇳 中文 8% 🇬🇧 英语 2%

          📚 主要内容

          💻 IT・系统与开发

          • 系统管理:Red Hat 等
          • 容器与编排:Kubernetes、OpenShift
          • 云计算:AWS、IBM Cloud
          • AI 入门:人工智能基础与实践
          • 技术笔记与考证经验

          🏠 不动产 × 宅建士

          • 宅建士考试笔记

          🎓 MBA 学习笔记

          • 管理学、经济学、财务分析等

          🔍 快速查找内容(标签分类)

          由于网站目前没有专门的设计,可能会导致查找信息不便。为了更快找到你感兴趣的内容,推荐使用以下标签功能 进行搜索!
          📌 定期更新,欢迎常来看看!
          📬 有任何建议或想法,也欢迎留言交流!