欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker中mysql鏡像保存與導(dǎo)入的方法詳解

 更新時(shí)間:2025年05月09日 16:35:37   作者:my向陽而生  
Docker 的 MySQL 鏡像保存通常有兩種場(chǎng)景:一種是保存鏡像本身的修改(如配置、初始化數(shù)據(jù)),另一種是持久化保存容器運(yùn)行時(shí)產(chǎn)生的數(shù)據(jù)(如數(shù)據(jù)庫表、用戶數(shù)據(jù)),這篇文章主要介紹了Docker中mysql鏡像保存與導(dǎo)入的方法詳解,需要的朋友可以參考下

一、Docker中mysql鏡像保存

Docker 的 MySQL 鏡像保存通常有兩種場(chǎng)景:一種是保存鏡像本身的修改(如配置、初始化數(shù)據(jù)),另一種是持久化保存容器運(yùn)行時(shí)產(chǎn)生的數(shù)據(jù)(如數(shù)據(jù)庫表、用戶數(shù)據(jù))。以下是具體方法:

方法 1:保存鏡像修改(通過 docker commit)

如果修改了容器內(nèi)的配置或希望保存初始化數(shù)據(jù),可以將容器提交為新的鏡像:

# 1. 停止 MySQL 容器
docker stop <container_name>
# 2. 提交容器為新的鏡像
docker commit <container_name> my-mysql-custom
# 3. 保存鏡像為 .tar 文件(可選,用于遷移或備份)
docker save my-mysql-custom > my-mysql-custom.tar

注意事項(xiàng):

  • 不推薦長(zhǎng)期依賴此方法:數(shù)據(jù)庫數(shù)據(jù)頻繁變化,鏡像體積會(huì)膨脹。
  • 適合保存初始配置(如修改 my.cnf 或預(yù)裝工具),不適合保存動(dòng)態(tài)數(shù)據(jù)。

方法 2:持久化數(shù)據(jù)(使用 Docker Volumes)

MySQL 的官方鏡像默認(rèn)將數(shù)據(jù)存儲(chǔ)在容器內(nèi)的 /var/lib/mysql。為了永久保存數(shù)據(jù),需通過**卷(Volume)綁定掛載(Bind Mount)**將數(shù)據(jù)映射到宿主機(jī)。

方案 1:使用 Docker Volume

# 1. 創(chuàng)建 Volume
docker volume create mysql_data
# 2. 啟動(dòng)容器時(shí)掛載 Volume
docker run -d \
  --name mysql-container \
  -e MYSQL_ROOT_PASSWORD=your_password \
  -v mysql_data:/var/lib/mysql \
  mysql:tag
# 數(shù)據(jù)會(huì)永久保存在 Volume 中

方案 2:使用宿主機(jī)目錄(Bind Mount)

# 1. 創(chuàng)建宿主機(jī)目錄
mkdir -p /host/path/mysql/data
# 2. 啟動(dòng)容器時(shí)綁定目錄
docker run -d \
  --name mysql-container \
  -e MYSQL_ROOT_PASSWORD=your_password \
  -v /host/path/mysql/data:/var/lib/mysql \
  mysql:tag
# 數(shù)據(jù)會(huì)永久保存在宿主機(jī)的 /host/path/mysql/data 目錄

如何備份數(shù)據(jù)?

# 直接備份 Volume 或綁定目錄的內(nèi)容
cp -r /host/path/mysql/data /backup/mysql-data

方法 3:導(dǎo)出數(shù)據(jù)庫內(nèi)容(通過 mysqldump)

即使不保存鏡像或卷,也可以通過 SQL 導(dǎo)出數(shù)據(jù):

# 1. 導(dǎo)出數(shù)據(jù)庫到 SQL 文件
docker exec mysql-container \
  mysqldump -u root -p"your_password" --all-databases > backup.sql
# 2. 恢復(fù)數(shù)據(jù)到新容器
cat backup.sql | docker exec -i new-mysql-container \
  mysql -u root -p"your_password"

總結(jié)

場(chǎng)景推薦方法
保存鏡像配置docker commit + docker save
持久化動(dòng)態(tài)數(shù)據(jù)Volume 或 Bind Mount
遷移或備份數(shù)據(jù)庫mysqldump 導(dǎo)出 SQL

關(guān)鍵原則:

  • 數(shù)據(jù)庫動(dòng)態(tài)數(shù)據(jù)(如表、用戶)永遠(yuǎn)通過 Volume/Bind Mount 持久化。
  • 鏡像僅用于保存靜態(tài)配置(如預(yù)置的 my.cnf 或初始化腳本)。
  • 定期使用 mysqldump 備份 SQL 更安全可靠。

二、導(dǎo)入保存的Mysql鏡像

以下是導(dǎo)入已保存的 MySQL 鏡像及其數(shù)據(jù)的完整方法,具體取決于你之前保存鏡像或數(shù)據(jù)的方式:

場(chǎng)景 1:導(dǎo)入通過 docker save 保存的鏡像文件(.tar格式)

如果鏡像通過 docker save 導(dǎo)出為 .tar 文件(如 my-mysql-custom.tar),按以下步驟導(dǎo)入:

步驟:

# 1. 導(dǎo)入鏡像到本地 Docker
docker load -i my-mysql-custom.tar
# 2. 查看是否導(dǎo)入成功
docker images
# 應(yīng)看到名為 `my-mysql-custom` 的鏡像
# 3. 運(yùn)行容器(注意掛載數(shù)據(jù)卷)
docker run -d \
  --name mysql-restored \
  -e MYSQL_ROOT_PASSWORD=your_password \
  -v mysql_data:/var/lib/mysql \  # 掛載 Volume 確保數(shù)據(jù)持久化
  my-mysql-custom

關(guān)鍵說明:

  • 鏡像不包含動(dòng)態(tài)數(shù)據(jù):如果原鏡像通過 docker commit 保存了容器內(nèi)的數(shù)據(jù)(如 /var/lib/mysql),新容器默認(rèn)仍會(huì)覆蓋這些數(shù)據(jù),除非顯式掛載 Volume。
  • 必須掛載 Volume:建議啟動(dòng)時(shí)掛載 Volume(或綁定宿主機(jī)目錄),否則容器重啟后數(shù)據(jù)可能丟失。

場(chǎng)景 2:直接使用已存在的自定義鏡像(無需 .tar 文件)

如果鏡像已存在于本地(如通過 docker commit 生成),直接運(yùn)行即可:

# 直接啟動(dòng)容器(掛載 Volume)
docker run -d \
  --name mysql-custom \
  -e MYSQL_ROOT_PASSWORD=your_password \
  -v mysql_data:/var/lib/mysql \
  my-mysql-custom  # 鏡像名稱

場(chǎng)景 3:恢復(fù)通過 mysqldump 導(dǎo)出的 SQL 數(shù)據(jù)

如果數(shù)據(jù)通過 mysqldump 導(dǎo)出為 .sql 文件(如 backup.sql),需先啟動(dòng)新容器,再導(dǎo)入數(shù)據(jù):

步驟:

# 1. 啟動(dòng)一個(gè)全新的 MySQL 容器(掛載 Volume)
docker run -d \
  --name mysql-new \
  -e MYSQL_ROOT_PASSWORD=your_password \
  -v mysql_data:/var/lib/mysql \
  mysql:tag
# 2. 將 SQL 文件導(dǎo)入到容器
cat backup.sql | docker exec -i mysql-new \
  mysql -u root -p"your_password"
# 或手動(dòng)進(jìn)入容器執(zhí)行
docker exec -it mysql-new mysql -u root -p
# 進(jìn)入 MySQL Shell 后運(yùn)行 `source backup.sql`

場(chǎng)景 4:恢復(fù) Volume 或綁定目錄的數(shù)據(jù)

如果數(shù)據(jù)已通過 Volume宿主機(jī)目錄 持久化,只需掛載原數(shù)據(jù)路徑即可:

方法 1:使用原有 Volume

# 直接掛載原有 Volume(假設(shè) Volume 名稱為 `mysql_data`)
docker run -d \
  --name mysql-restored \
  -e MYSQL_ROOT_PASSWORD=your_password \
  -v mysql_data:/var/lib/mysql \
  mysql:tag  # 可使用原鏡像或新鏡像

方法 2:使用宿主機(jī)備份目錄

# 假設(shè)備份數(shù)據(jù)在宿主機(jī)的 `/backup/mysql-data` 目錄
docker run -d \
  --name mysql-restored \
  -e MYSQL_ROOT_PASSWORD=your_password \
  -v /backup/mysql-data:/var/lib/mysql \
  mysql:tag

總結(jié):根據(jù)需求選擇恢復(fù)方式

場(chǎng)景推薦方法
保存鏡像配置docker commit + docker save
持久化動(dòng)態(tài)數(shù)據(jù)VolumeBind Mount
遷移或備份數(shù)據(jù)庫mysqldump 導(dǎo)出 SQL

注意事項(xiàng):

  • 鏡像僅保存靜態(tài)配置:數(shù)據(jù)庫動(dòng)態(tài)數(shù)據(jù)(如表、用戶)依賴 Volume 或 SQL 備份恢復(fù)。
  • 權(quán)限問題:如果使用宿主機(jī)目錄掛載,確保目錄權(quán)限允許 MySQL 容器寫入(可能需要 chmod -R 777 /host/path 或調(diào)整 SELinux/AppArmor 配置)。

到此這篇關(guān)于Docker中mysql鏡像保存與導(dǎo)入的文章就介紹到這了,更多相關(guān)docker mysql鏡像內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker鏡像構(gòu)建速度優(yōu)化實(shí)現(xiàn)

    Docker鏡像構(gòu)建速度優(yōu)化實(shí)現(xiàn)

    本文主要介紹了Docker鏡像構(gòu)建速度優(yōu)化實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • centos6使用docker部署zookeeper操作示例

    centos6使用docker部署zookeeper操作示例

    這篇文章主要介紹了centos6使用docker部署zookeeper操作,結(jié)合實(shí)例形式分析了centos6平臺(tái)使用docker部署zookeeper相關(guān)命令與使用技巧,需要的朋友可以參考下
    2020-02-02
  • docker安裝Adminer并支持mysql和mongodb的詳細(xì)步驟

    docker安裝Adminer并支持mysql和mongodb的詳細(xì)步驟

    這篇文章主要介紹了docker安裝Adminer并支持mysql和mongodb,通過查找并拉取Adminer鏡像,啟動(dòng)docker,支持mysq,本文分步驟給大家詳細(xì)講解,需要的朋友可以參考下
    2022-10-10
  • Windows下Docker安裝各種軟件的詳細(xì)過程

    Windows下Docker安裝各種軟件的詳細(xì)過程

    這篇文章主要介紹了Windows下Docker安裝各種軟件的詳細(xì)過程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-07-07
  • 關(guān)于docker清理Overlay2占用磁盤空間的問題(親測(cè)有效)

    關(guān)于docker清理Overlay2占用磁盤空間的問題(親測(cè)有效)

    使用Docker過程中,長(zhǎng)時(shí)間運(yùn)行服務(wù)容器,導(dǎo)致不能進(jìn)行上傳文件等操作,今天通過本文給大家詳細(xì)介紹下docker清理Overlay2占用磁盤空間的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2022-03-03
  • Docker快速部署SpringBoot項(xiàng)目介紹

    Docker快速部署SpringBoot項(xiàng)目介紹

    大家好,本篇文章主要講的是Docker快速部署SpringBoot項(xiàng)目介紹,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下哦,方便下次瀏覽
    2021-12-12
  • harbor可視化私有鏡像倉庫環(huán)境及服務(wù)部署示例

    harbor可視化私有鏡像倉庫環(huán)境及服務(wù)部署示例

    這篇文章主要為大家介紹了harbor可視化私有鏡像倉庫環(huán)境及服務(wù)部署示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • docker和docker-compose一鍵安裝教程(支持在線和離線)

    docker和docker-compose一鍵安裝教程(支持在線和離線)

    這篇文章主要介紹了docker和docker-compose一鍵安裝(支持在線和離線),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Docker部署MySQL8集群(一主二從)的實(shí)現(xiàn)步驟

    Docker部署MySQL8集群(一主二從)的實(shí)現(xiàn)步驟

    本文主要介紹了Docker部署MySQL8集群,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Docker 端口映射與容器互聯(lián)的實(shí)現(xiàn)

    Docker 端口映射與容器互聯(lián)的實(shí)現(xiàn)

    Docker的端口映射和容器互聯(lián)是構(gòu)建和管理微服務(wù)架構(gòu)時(shí)重要的概念,本文主要介紹了Docker 端口映射與容器互聯(lián)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01

最新評(píng)論