SQL ダンプを MySQL コンテナにインポートし、その後コンテナを新しいイメージとしてコミットしようとすると、次のような問題が発生する可能性があります。新しいイメージでコンテナを起動するときに、新しく作成されたデータがデータベースに保持されない問題。この記事では、根本原因を調査し、この問題を解決するための解決策を提供します。
公式の MySQL Docker イメージは、データをボリュームに保存します。これは、コンテナの寿命を超えてデータの永続性を確保するために望ましい設定です。ただし、データ ボリュームは Union File System をバイパスするため、イメージのコミット プロセスには含まれません。その結果、コンテナの実行中にデータベースに追加されたデータは、コミットされたイメージには反映されません。
この制限を克服し、新しく追加されたデータをコミットするには、ユーザーが独自の MySQL ベースを作成できます。データ量のないイメージ。これには、必要なソフトウェアと構成を含み、ボリューム マウント ポイントを除くカスタム イメージの構築が含まれます。
FROM mysql:latest RUN apt-get update && apt-get install -y mysql-client
mysql -uroot -psecret -e 'create database <database_name>;' mysql -uroot -psecret <database_name> < /mnt/<sql_dump_file>.sql
docker commit -m "Imported <database_name> SQL dump" <container_id> <new_image_name>:<version>
ボリュームなしでカスタム MySQL 基本イメージを作成することにより、ユーザーは次のことが可能になります。
データが追加されることに注意することが重要です。コミット後に実行中のコンテナは、コンテナが存在しなくなると失われます。これは、データが永続ボリュームに保存されなくなり、コンテナーの一時的なファイル システムに保存されるためです。
以上がコンテナをイメージとしてコミットするときに MySQL データベース データを保存するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。