ホームページ  >  記事  >  データベース  >  コンテナをイメージとしてコミットするときに MySQL データベース データを保存するにはどうすればよいですか?

コンテナをイメージとしてコミットするときに MySQL データベース データを保存するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-24 11:50:29742ブラウズ

How to Preserve MySQL Database Data When Committing a Container as Image?

MySQL コンテナ内の侵害されたデータベース データのトラブルシューティング

SQL ダンプを MySQL コンテナにインポートし、その後コンテナを新しいイメージとしてコミットしようとすると、次のような問題が発生する可能性があります。新しいイメージでコンテナを起動するときに、新しく作成されたデータがデータベースに保持されない問題。この記事では、根本原因を調査し、この問題を解決するための解決策を提供します。

バックグラウンド

公式の MySQL Docker イメージは、データをボリュームに保存します。これは、コンテナの寿命を超えてデータの永続性を確保するために望ましい設定です。ただし、データ ボリュームは Union File System をバイパスするため、イメージのコミット プロセスには含まれません。その結果、コンテナの実行中にデータベースに追加されたデータは、コミットされたイメージには反映されません。

解決策

この制限を克服し、新しく追加されたデータをコミットするには、ユーザーが独自の MySQL ベースを作成できます。データ量のないイメージ。これには、必要なソフトウェアと構成を含み、ボリューム マウント ポイントを除くカスタム イメージの構築が含まれます。

ステップバイステップ ガイド

  1. ボリュームを含まないカスタム MySQL ベース イメージを構築します。
FROM mysql:latest
RUN apt-get update && apt-get install -y mysql-client
  1. 新しい MySQL データベースを作成し、SQL ダンプをインポートします:
mysql -uroot -psecret -e 'create database <database_name>;'
mysql -uroot -psecret <database_name> < /mnt/<sql_dump_file>.sql
  1. コンテナを新しいイメージとしてコミットします:
docker commit -m "Imported <database_name> SQL dump" <container_id> <new_image_name>:<version>

このソリューションの利点

ボリュームなしでカスタム MySQL 基本イメージを作成することにより、ユーザーは次のことが可能になります。

  • データを
  • コンテナの再起動やアップグレード後もデータが保持されるようにします。

警告

データが追加されることに注意することが重要です。コミット後に実行中のコンテナは、コンテナが存在しなくなると失われます。これは、データが永続ボリュームに保存されなくなり、コンテナーの一時的なファイル システムに保存されるためです。

以上がコンテナをイメージとしてコミットするときに MySQL データベース データを保存するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。