docker安裝與啟動MYSQL

docker安裝與啟動MYSQL

1 docker安裝MYSQL

到官網(wǎng)上查找想要的MYSQL鏡像

圖片.png
docker pull mysql:5.7
圖片.png

可以看到已經(jīng)有MySQL5.7這個(gè)鏡像了

2 啟動MYSQL鏡像

2.1 啟動

docker run -v /d_data/mysqldb/conf:/etc/mysql/conf.d -v /d_data/mysqldb/logs:/logs -v /d_data/mysqldb/data:/var/lib/mysql -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD='root' --name mysql mysql:5.7

解釋

-v 映射數(shù)據(jù)卷 其中/etc/mysql/conf.d是docker mysql存儲配置文件的地方, /logs是docker mysql存儲日志的地方, /var/lib/mysql是數(shù)據(jù)庫存儲數(shù)據(jù)庫信息包括數(shù)據(jù)庫表,數(shù)據(jù)庫、視圖之類的數(shù)據(jù)的地方

-d 后臺運(yùn)行

-p 做端口映射,因?yàn)槲业奶摂M機(jī)還要另外一個(gè)mysql所以要用3307端口來映射。

-e 啟動時(shí)執(zhí)行的命令,設(shè)置root的密碼。要啟動數(shù)據(jù)庫必須給root一個(gè)密碼,隨機(jī)密碼也行。如果沒有密碼是無法啟動mysql的。

連接

圖片.png

地址填寫虛擬機(jī)的地址

2.2 配置

另外,要給mysql添加其他的配置,例如設(shè)置字符集否則默認(rèn)字符集是拉丁文的。(可以從網(wǎng)上拷貝一份配置文件)
到對應(yīng)的文件夾下面創(chuàng)建,因?yàn)槲业氖窃?/p>

圖片.png
圖片.png

圖片.png

重啟


圖片.png

圖片.png

3 數(shù)據(jù)卷相關(guān)內(nèi)容

3.1 什么是容器數(shù)據(jù)卷?

數(shù)據(jù)卷存在于宿主機(jī)中,獨(dú)立于容器,和容器的生命周期是分離的 數(shù)據(jù)卷可以目錄也可以是文件 容器可以利用數(shù)據(jù)卷與宿主機(jī)進(jìn)行數(shù)據(jù)共享,實(shí)現(xiàn)了容器間的數(shù)據(jù)共享和交換

3.2 容器數(shù)據(jù)卷的特點(diǎn)

1、容器啟動時(shí)初始化數(shù)據(jù)卷,如果容器使用的鏡像包含了數(shù)據(jù),這些數(shù)據(jù)也會拷貝到數(shù)據(jù)卷中 2、對 數(shù)據(jù)卷 的修改會立馬生效 3、數(shù)據(jù)卷的變化不會影響鏡像的更新 4、數(shù)據(jù)卷是宿主機(jī)中的一個(gè)目錄

3.3 數(shù)據(jù)卷的運(yùn)用場景

1、在多個(gè)運(yùn)行容器之間共享數(shù)據(jù)。如果您沒有明確創(chuàng)建它,則會在第一次將其裝入容器時(shí)創(chuàng)建卷。當(dāng)該容器停止或被移除時(shí),該卷仍然存在。多個(gè)容器可以同時(shí)安裝相同的卷,無論是讀寫還是只讀。僅當(dāng)您明確刪除卷時(shí)才會刪除卷

2、當(dāng)您想要將容器的數(shù)據(jù)存儲在遠(yuǎn)程主機(jī)或云提供商上而不是本地時(shí)

3、當(dāng)您需要備份,還原或?qū)?shù)據(jù)從一臺Docker主機(jī)遷移到另一臺時(shí),卷是更好的選擇。您可以停止容器,然后備份卷的目錄

3.4 數(shù)據(jù)卷的相關(guān)命令

3.4.1 創(chuàng)建容器數(shù)據(jù)卷
docker volume create 數(shù)據(jù)卷名稱

注意

容器卷默認(rèn)保存在宿主機(jī)的/var/lib/docker/volumes路徑下

3.4.2 創(chuàng)建容器時(shí)指定數(shù)據(jù)卷
docker run -it 
    --mount source=數(shù)據(jù)卷名稱,target=容器中的掛載路徑,type=volume 
    --name 容器別名 鏡像名稱

參數(shù)介紹:

source 指定宿主機(jī)中數(shù)據(jù)卷的名稱 target 指定容器中對應(yīng)的掛載路徑 type 指定為數(shù)據(jù)卷的方式掛載,還可以選擇bind、tmpfs,默認(rèn)為volume

注意:

1、如果掛載一個(gè)空的數(shù)據(jù)卷到容器中的一個(gè)非空目錄中,那么這個(gè)目錄下的文件會被復(fù)制到數(shù)據(jù)卷中 2、如果掛載一個(gè)非空的數(shù)據(jù)卷到容器中的一個(gè)目錄中,那么容器中的目錄中會顯示數(shù)據(jù)卷中的數(shù)據(jù)。如果原來容器中的目錄中有數(shù)據(jù),那么這些原始數(shù)據(jù)會被隱藏掉

3.4.3 直接在創(chuàng)建容器時(shí)指定數(shù)據(jù)卷
docker run  ... [-v 宿主機(jī)數(shù)據(jù)卷:docker容器路徑:ro] []...

注意:

1、通過這種方式可以任意指定宿主機(jī)的數(shù)據(jù)卷位置 2、如果隨意指定數(shù)據(jù)卷的位置,容器中對應(yīng)路徑的文件就不會復(fù)制到宿主機(jī)的數(shù)據(jù)卷中,而是全部被清空 3、:ro表示以只讀的方式掛載容器卷,不寫再表示以讀寫的方式掛載 4、可以通過-v連續(xù)設(shè)置多個(gè)容器卷路徑

總結(jié):

數(shù)據(jù)卷未顯示聲明路徑(默認(rèn)在/var/lib/docker/volumes下)

1、數(shù)據(jù)卷為空,對應(yīng)的容器路徑有數(shù)據(jù),則容器中的數(shù)據(jù)直接同步到數(shù)據(jù)卷中 2、數(shù)據(jù)卷有數(shù)據(jù),對應(yīng)的容器路徑不存在,則啟動容器時(shí),自動創(chuàng)建該容器路徑,并且將數(shù)據(jù)卷的數(shù)據(jù)同步到該路徑下 3、數(shù)據(jù)卷有數(shù)據(jù),對應(yīng)的容器路徑也有數(shù)據(jù)(數(shù)據(jù)不同),會把數(shù)據(jù)卷中的數(shù)據(jù)同步到容器路徑中,容器路徑中的文件會被隱藏(宿主機(jī) 覆蓋 容器)

如果宿主機(jī)的數(shù)據(jù)卷為空,容器覆蓋宿主機(jī),如果數(shù)據(jù)卷不為空,則宿主機(jī)覆蓋容器

數(shù)據(jù)卷聲明指定路徑

1、數(shù)據(jù)卷為空,對應(yīng)的容器路徑有數(shù)據(jù),則直接將容器路徑中的數(shù)據(jù)隱藏 2、數(shù)據(jù)卷有數(shù)據(jù),對應(yīng)的容器路徑不存在,則啟動容器時(shí),自動創(chuàng)建該容器路徑,并且將數(shù)據(jù)卷的數(shù)據(jù)同步到該路徑下 3、數(shù)據(jù)卷有數(shù)據(jù),對應(yīng)的容器路徑也有數(shù)據(jù)(數(shù)據(jù)不同),會把數(shù)據(jù)卷中的數(shù)據(jù)同步到容器路徑中,容器路徑中的文件會被隱藏(宿主機(jī) 覆蓋 容器)

無論情況如何,永遠(yuǎn)是宿主機(jī) 覆蓋 容器路徑

數(shù)據(jù)卷是文件的情況

1、數(shù)據(jù)卷指定一個(gè)文件,對應(yīng)的容器文件不存在,直接將數(shù)據(jù)卷文件覆蓋到容器中 2、數(shù)據(jù)卷指定的文件不存在,容器的文件存在,啟動容器會報(bào)錯(cuò)

如果需要綁定文件,則必須保證宿主機(jī)的數(shù)據(jù)卷中文件必須存在

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容