我們使用Docker的目的就是圖它方便下載部署,不用常規(guī)的經(jīng)歷下載、配置、安裝等等繁瑣的步驟。但是與此同時Docker也存在一些缺點(diǎn),像刪除容器后數(shù)據(jù)就都沒有了。很顯然,不能持久化對于需要數(shù)據(jù)持久化的MySQL數(shù)據(jù)庫來說是不能接受的,那有沒有方式可以解決。
有,通過掛載方式
1. Docker持久化MySQL
掛載最大的優(yōu)點(diǎn)是在刪除容器后,該文件依然存在與主機(jī)中,下次啟動新容器依然可以使用這些數(shù)據(jù)而不用重新配置一遍環(huán)境和恢復(fù)數(shù)據(jù),這對需要持久化的容器特別友好,如mysql。
至于使用,通過 -v
命令可以把主機(jī)中的文件掛載到容器中,在啟動容器時指定,舉例如下:
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
2. 測試刪除MySQL容器后新建容器,數(shù)據(jù)還在不在
-
假設(shè),存在名為 mysql_test 的容器中,創(chuàng)建了 spring_test 數(shù)據(jù)庫
-
現(xiàn)在刪除 mysql_test 容器(如果不掛載那么所有數(shù)據(jù)庫都會被刪除)
docker rm mysql_test
-
重新安裝掛載源文件到新的容器 mysql_test_new 中
docker run -p 3306:3306 --name mysql_test_new \ -v /mydata/mysql/log:/var/log/mysql \ -v /mydata/mysql/data:/var/lib/mysql \ -v /mydata/mysql/conf:/etc/mysql \ -e MYSQL_ROOT_PASSWORD=root \ -d mysql:5.7
-
登錄發(fā)現(xiàn)原來的數(shù)據(jù)庫 spring_test 的數(shù)據(jù)任然存在,哈哈,體驗(yàn)很棒
3. 參考資料
我的文章:《如何查看一個Docker鏡像有哪些版本.md》
我的文章:《Docker設(shè)置國內(nèi)鏡像源.md》
我的文章:《Docker快速入門實(shí)用教程.md》
我的文章:《Docker安裝MySQL、Redis、RabbitMQ、Elasticsearch、Nacos等常見服務(wù).md》
我的文章:《Docker安裝Nacos服務(wù).md》
我的文章:《如何修改Docker中的文件.md》
我的文章:《Docker容器間的連接或通信方式.md》
我的文章:《Docker安裝的MySQL如何持久化數(shù)據(jù)庫數(shù)據(jù).md》
我的文章:《制作Docker私有倉庫.md》
我的文章:《使用docker-maven-plugin插件構(gòu)建發(fā)布推鏡像到私有倉庫.md》
我的文章:《解決Docker安裝Elasticsearch后訪問9200端口失敗.md》
傳送門:保姆式Spring5源碼解析
歡迎與作者一起交流技術(shù)和工作生活文章來源:http://www.zghlxwxcb.cn/news/detail-694393.html
聯(lián)系作者文章來源地址http://www.zghlxwxcb.cn/news/detail-694393.html
到了這里,關(guān)于【Docker】Docker 部署 Mysql 并設(shè)置數(shù)據(jù)持久化的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!