Docker掛載資料卷保存MySQL數(shù)據(jù)
簡介
docker是運(yùn)行在虛擬環(huán)境中的,這樣會(huì)有一個(gè)問題,那就是儲(chǔ)存在docker內(nèi)的數(shù)據(jù)會(huì)隨著docker的重啟、宕機(jī)而丟失,從而造成不可估量的損失。
所以docker提供了-v指令,可以將容器內(nèi)的目錄以及文件映射到外部文件系統(tǒng),容器啟動(dòng)時(shí)會(huì)讀取外部文件系統(tǒng),從而保證數(shù)據(jù)的完整性。
mysql作為最流行的數(shù)據(jù)庫之一,使用范圍十分廣泛,如果部署在docker卻無法持久化怎么辦呢?今天就來說一下mysql資料卷。
MySql資料卷
mysql需要保存的只有兩種文件:數(shù)據(jù)和配置文件。mysql的默認(rèn)配置文件是 /etc/mysql/my.cnf (winDocker下是 /etc/my.cnf),如果是docker下的mysql,建議在 /etc/mysql/conf.d 目錄中創(chuàng)建 .cnf 文件。新建的文件只要保證后綴名是 cnf 即可覆蓋配置項(xiàng)。至于mysql數(shù)據(jù)存放的目錄,可以在mysql配置文件中找到:
文件寫的很清楚,數(shù)據(jù)保存在 /var/lib/mysql 路徑。接下來需要?jiǎng)?chuàng)建存放資料卷的路徑,我創(chuàng)建的目錄是 /docker/mysql/data 和 /docker/mysql/conf.d,前者是數(shù)據(jù)目錄,后者是配置目錄。接下來需要在本機(jī)指定位置新建目錄(我已經(jīng)創(chuàng)建好了):
現(xiàn)在編寫命令:
docker run -itd -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /docker/mysql/data/:/var/lib/mysql/ -v /docker/mysql/conf.d:/etc/mysql/conf.d --name mysql01 mysql
這命令有些長,解釋一下:
- -itd:開啟交互模式,模擬終端,后臺(tái)運(yùn)行
- -p 3306:3306:對(duì)應(yīng)端口映射到宿主機(jī)
- -e MYSQL_ROOT_PASSWORD=123456:設(shè)置root賬戶密碼為123456
- -v /docker/mysql/data/:/var/lib/mysql/:將宿主機(jī)的 /docker/mysql/data/ 目錄與mysql的 /var/lib/mysql/ 同步
- -v /docker/mysql/conf.d:/etc/mysql/conf.d:將宿主機(jī)的 /docker/mysql/conf.d 目錄與mysql的 /etc/mysql/conf.d 同步
- --name mysql01:自定義容器名稱
mysql:運(yùn)行的鏡像名稱
這一命令執(zhí)行過后,你會(huì)看到新容器mysql01已經(jīng)正常啟動(dòng)了:
正常情況下,你設(shè)置的目錄下會(huì)多出一些文件:
接下來測(cè)試一下。通過客戶端連接到docker下的mysql(如果不知道如何使用客戶端連接docker下的mysql,請(qǐng)翻我之前的博文),新建數(shù)據(jù)庫:
然后重啟docker:
重啟成功以后,進(jìn)入容器查看數(shù)據(jù)庫:
數(shù)據(jù)庫并沒有因?yàn)閐ocker重啟而被初始化,證明資料卷已經(jīng)生效。以后再也不怕Docker宕機(jī)而數(shù)據(jù)丟失了。
后言
我分別在winDocker和linuxDocker下設(shè)置了mysql資料卷,但只有l(wèi)inux可以跑得起來。winDocker的資料卷可以設(shè)置成功,但是重啟docker后會(huì)出現(xiàn)無法啟動(dòng)mysql容器的錯(cuò)誤。根據(jù)mysql官方聲明得知,docker內(nèi)的mysql官方鏡像是oracle公司專門為linux平臺(tái)構(gòu)建的,推測(cè)winDocker無法正確掛載資料卷應(yīng)該和官方支持有點(diǎn)原因,建議同學(xué)們直接上手linux。
到此這篇關(guān)于Docker掛載資料卷保存MySQL數(shù)據(jù)的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
jenkins+docker+nginx+nodejs持續(xù)集成部署vue前端項(xiàng)目
本文主要介紹了jenkins+docker+nginx+nodejs持續(xù)集成部署vue前端項(xiàng)目,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05部署維護(hù)docker環(huán)境的詳細(xì)教程
這篇文章主要介紹了部署維護(hù)docker環(huán)境的詳細(xì)教程,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02Docker 使用nsenter工具進(jìn)入容器的操作
這篇文章主要介紹了Docker 使用nsenter工具進(jìn)入容器的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-11-11docker 安裝ElasticSearch 6.x的教程詳解
這篇文章主要介紹了docker 安裝ElasticSearch 6.x的教程,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-04-04