將容器作為鏡像提交時如何保留MySQL資料庫資料?

Susan Sarandon
發布: 2024-10-24 11:50:29
原創
663 人瀏覽過

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

對MySQL 容器中受損的資料庫資料進行故障排除

嘗試將SQL 轉儲匯入MySQL 容器並隨後將容器作為新映像提交時,使用者可能會遇到使用新映像啟動容器時資料庫不保留新建立的資料的問題。本文調查了根本原因並提供了解決此問題的解決方案。

背景

官方 MySQL Docker 映像將資料儲存在磁碟區中。這是一個理想的設置,可以確保資料在容器的生命週期之外持續存在。但是,資料卷繞過聯合檔案系統,並且不包含在映像提交過程中。因此,在容器運行時添加到資料庫的資料不會反映在提交的鏡像中。

解決方案

要克服此限制並提交新添加的數據,用戶可以創建自己的 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中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!