亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Docker如何掛載mysql

 更新時間:2023年03月07日 15:38:17   作者:MinggeQingchun  
這篇文章主要介紹了Docker如何掛載mysql問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Docker掛載mysql

我們在VMware上的Linux系統(tǒng)上安裝啟動mysql服務后,可以在本機Windows系統(tǒng)上通過Navicat遠程訪問,可以進行數(shù)據(jù)庫表的增刪改查,但是會存在一個問題

此時如果通過docker關閉MySQL容器,就會導致數(shù)據(jù)丟失(可以理解為數(shù)據(jù)庫中的提交事務,未提交事務會導致數(shù)據(jù)沒保存成功 ),因此修改容器之后需要保存或者掛載mysql數(shù)據(jù)庫

1.下載鏡像

# 最新版本
docker pull mysql
 
# 如 5.7 版本 本文基于5.7版本
docker pull mysql:5.7

2.啟動mysql容器

# 運行mysql命名容器名稱為mysql并且設置root賬號初始密碼為root
docker run  -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD="root" -d mysql:5.7

3.確定mysql配置文件路徑

#進入docker容器,mysql為剛安裝的容器名稱
docker exec -it mysql或者mysql容器ID /bin/bash
 
# 查找Docker內(nèi),MySQL配置文件my.cnf的位置
mysql --help | grep my.cnf
 
# 會輸出數(shù)據(jù)文件的存放路徑 /var/lib/mysql/
show variables like '%datadir%';

4.創(chuàng)建本地路徑并掛載Docker內(nèi)數(shù)據(jù)

拷貝MySQL容器配置文件

mkdir -p /usr/local/mysql/conf && mkdir -p /usr/local/mysql/data
 
# 將容器的配置復制到服務器
docker cp mysql:/etc/mysql/* /usr/local/mysql/conf/
或
docker cp mysql:/etc/mysql/. /usr/local/mysql/conf/
 
# 修改字符集
vim /usr/local/mysql/conf/my.cnf
character-set-server=utf8

如果遇到如下錯誤:

/usr/bin/docker-current:Error response from daemon: error creating overlay mount to /var/lib/docker/overlay2/1b1d4a0234ee4caxxxxx/merged: invalid argument.
 
See '/usr/bin/docker-current run --help'.

這個是因為用的overlay2文件系統(tǒng),而系統(tǒng)默認只能識別overlay文件系統(tǒng),更新文件系統(tǒng)即可

systemctl stop docker ? ? ?//停掉docker服務

rm -rf /var/lib/docker ? ? ? ?//注意會清掉docker images的鏡像

vim /etc/sysconfig/docker-storage ? ? ?

//將文件里的overlay2改成overlay即可

如:DOCKER_STORAGE_OPTIONS="--storage-driver overlay"

vim /etc/sysconfig/docker ? ? ? ? //去掉option后面的--selinux-enabled

然后啟動docker即可:systemctl start docker

5.重新啟動mysql容器

docker stop mysql
 
docker rm mysql
 
docker run --name mysql \
-p 3306:3306 \
-v /usr/local/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /usr/local/mysql/data:/var/lib/mysql \  
-v /usr/local/mysql/log:/logs \
-e MYSQL_ROOT_PASSWORD=admin123456 \
--restart=always \
-d mysql:5.7
 
docker run --name mysql -p 3306:3306 -v /usr/local/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/log:/logs -e MYSQL_ROOT_PASSWORD=admin123456 --restart=always -d mysql

映射MySQL數(shù)據(jù)文件后,刪除或者停止mysql容器后能保留數(shù)據(jù)庫文件,不至于導致數(shù)據(jù)庫丟失

初識Docker掛載mysql掛載備份

首先下載一個mysql:docker pull mysql

運行mysql容器,需要做數(shù)據(jù)掛載(掛載就是將mysql中的文件,掛載到linux中,下次修改mysql配置文件,就不需要進入mysql,也可以備份mysql的數(shù)據(jù)):##安裝啟動mysql,需要配置密碼:

docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=自己設置的密碼 --name mysql01 mysql
  • -d 后臺啟動
  • -p 端口映射,將3306映射到外部端口
  • -v 卷掛載,將mysql內(nèi)部文件同步到linux的文件中,做到備份
  • -e 環(huán)境配置,這里配置的是mysql密碼
  • --name 容器名稱

掛載方式有具名掛載和匿名掛載

#查看所有volume(卷掛載)的情況 :docker volume ls

#匿名掛載:-v 容器內(nèi)路徑

docker run -d -P --name mysql01 -v /etc/mysql mysql

(-P 隨機映射端口)

#具名掛載:

docker run -d -P --name mysql02 -v juming-mysql:/etc/mysql mysql

(具名掛載名稱:juming-mysql)

#通過 -v 卷名:容器內(nèi)路徑

#查看一下這個卷:

docker volume inspect juming-mysql

在這里插入圖片描述

#所有的docker容器卷,在沒有指定目錄的情況下,都存儲在 /var/lib/docker/volumes/xxx/_data

**如何確定是具名掛載還是匿名掛載,還是指定路徑掛載!**
				
	-v 容器內(nèi)路徑		#匿名掛載
	-v 卷名:容器內(nèi)路徑		#具名掛載
	-v /宿主機路徑:容器內(nèi)路徑		#指定路徑掛載

拓展

#通過 -v 容器內(nèi)路徑:ro	rw	改變讀寫權限
ro	readonly	#只讀
rw	readwrite	#可讀可寫

#一旦設置了容器權限,容器對我們掛載出來的內(nèi)容就有限定
docker run -d -P --name mysql02 -v juming-mysql:/etc/mysql:ro mysql
docker run -d -P --name mysql02 -v juming-mysql:/etc/mysql:rw mysql

#ro,只要看到ro就說明這個路徑只能通過宿主機操作,容器內(nèi)部是無法操作的!

在測試的時候發(fā)現(xiàn),如果一個文件名,如juming-mysql掛載過一次,刪除容器后,再使用這個名字時,會無法掛載上,原因是docker 里面的volumes緩存沒有清除:

可以使用 docker --help 可以看到命令

在這里插入圖片描述

再使用:docker system --help

在這里插入圖片描述

這個就是docker清理volumes緩存的選項,輸入docker system prune 確定時輸入y,即可刪除 掛載緩存

在這里插入圖片描述

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Docker搭建Redis?Cluster集群的教程詳解

    Docker搭建Redis?Cluster集群的教程詳解

    這篇文章主要為大家詳細介紹了Docker搭建Redis?Cluster集群的相關知識,文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的可以參考下
    2024-03-03
  • 解決docker訪問外部https數(shù)字證書問題

    解決docker訪問外部https數(shù)字證書問題

    這篇文章主要介紹了docker訪問外部https數(shù)字證書問題,為了解決證書驗證的問題,我們需要在構建 docker 鏡像的時候將 ca-certificates 根證書裝上,需要的朋友可以參考下
    2022-09-09
  • docker?inspect?操作詳解

    docker?inspect?操作詳解

    docker?inspect是docker客戶端的原生命令,用于查看docker對象的底層基礎信息。包括容器的id、創(chuàng)建時間、運行狀態(tài)、啟動參數(shù)、目錄掛載、網(wǎng)路配置等等。另外,該命令也可以用來查看docker鏡像的信息,這篇文章主要介紹了docker?inspect?詳解,需要的朋友可以參考下
    2023-01-01
  • Docker容器中運行nginx

    Docker容器中運行nginx

    本文介紹了從docker hub拉取官方nginx鏡像并自定義部分配置,綁定端口運行的過程。希望小伙伴們能夠從中得到些知識
    2017-03-03
  • dockerfile指令構建docker鏡像的示例代碼

    dockerfile指令構建docker鏡像的示例代碼

    本文主要介紹了dockerfile指令構建docker鏡像的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • dockerDesktop使用教程

    dockerDesktop使用教程

    本文給大家分享docker Desktop使用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-11-11
  • 關于docker?cgroups資源限制的問題

    關于docker?cgroups資源限制的問題

    cgroups是一個非常強大的linux內(nèi)核工具,他不僅可以限制被namespace隔離起來的資源,還可以為資源設置權重、計算使用量,這篇文章主要介紹了docker?cgroups資源限制,需要的朋友可以參考下
    2022-09-09
  • 遷移Docker中MySQL容器的全過程

    遷移Docker中MySQL容器的全過程

    在這篇文章中,我們將介紹如何將在 Docker 中運行的 MySQL 容器從一臺機器(我們稱之為A機器)遷移到另一臺機器(我們稱之為B機器),這個過程主要包括五個步驟:提交容器為鏡像,保存鏡像為 tar 包等,文中有詳細的代碼示例供大家參考,需要的朋友可以參考下
    2023-12-12
  • docker安裝rockerChat設置聊天室的詳細步驟

    docker安裝rockerChat設置聊天室的詳細步驟

    這篇文章主要介紹了docker安裝rockerChat設置聊天室的方法,通過設置文件獲取docker-compose文件,文中給大家介紹的非常詳細,需要的朋友可以參考下
    2021-05-05
  • Dockerfile如何使用alpine系統(tǒng)制作haproxy鏡像

    Dockerfile如何使用alpine系統(tǒng)制作haproxy鏡像

    這篇文章主要介紹了Dockerfile如何使用alpine系統(tǒng)制作haproxy鏡像問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05

最新評論