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
          18-Red Hat DO285 第5章:カスタムコンテナイメージの作成-1:コンテナイメージの管理ラボ
          Lazy loaded image
          17-Red Hat DO285 第4章:コンテナイメージの管理-4:コンテナイメージの管理ラボ
          Lazy loaded image
          16-Red Hat DO285 第4章:コンテナイメージの管理-3:ガイド付き演習
          Lazy loaded image
          15-Red Hat DO285 第4章:コンテナイメージの管理-2:コンテナイメージの操作
          Lazy loaded image
          10-Red Hat DO285 第3章: コンテナの管理-4:ガイド付き演習: MySQL データベースの永続化08-Red Hat DO285 第3章: コンテナの管理-2:ガイド付き演習:MySQLコンテナの管理
          Loading...
          みなみ
          みなみ
          一个普通的干饭人🍚
          最新发布
          02-生成AIパスポート試験対策:第2章「生成AI」
          2025-2-1
          01-生成AIパスポート試験対策:第1章「人口知能」
          2025-2-1
          究極のAWS認定 AI 実践者 AIF-C01 - 学習メモ
          2025-1-27
          不要再傻傻的直接买NISA啦
          2025-1-27
          Kubernetes、仮想マシンとコンテナの概念を超簡単に解説!
          2025-1-24
          529-AWS SAP AWS 「理論・実践・一問道場」VPCエンドポイント
          2025-1-22
          公告
          🎉欢迎访问我的博客🎉
          - 感谢您的支持 --
          本站点于2024/09/01建立
          👏主要分享IT相关主题👏
          系统管理:
          Redhat…
          容器和编排:
          Kubernetes、Openshift…
          云计算:
          AWS、IBM…
          AI入门
          以及技术笔记和考证经验
          定期更新,欢迎互动。
          感谢访问!
          快速浏览相关标签