1. 程式人生 > >linux下docker通過掛載資料捲到 mysql實現容器配置本地化

linux下docker通過掛載資料捲到 mysql實現容器配置本地化

前言:當希望在本地上配置容器中的mysql時,發現一個問題,本地需要完整的配置檔案目錄,如果本地是空目錄,那麼容器中的配置目錄也是空的所以不能執行映象,這裡解決這個問題,思路是任意執行一個容器,把裡面的配置目錄複製到本地,然後刪除這個容器,再建立新的容器,並把複製出來的配置目錄和容器中的配置目錄同步,這裡記錄下這個過程。

第一步:建立一個本地配置目錄

輸入命令:mkdir -p /root/DockerCommonConfig/MysqlConfig/,建立資料夾路徑。

第二步:建立任意一個映象並對映配置目錄

docker run -d -p 3306:3306 -v $("pwd):/app

--name tempMysql -e MYSQL_ROOT_PASSWORD=123456 mysql 

ps:暫時把本地配置目錄和容器中的app資料夾關聯(不能直接關聯容器配置目錄,由於檔案同步原因這會導致容器配置目錄為空無法啟動容器),後續會把容器的配置檔案複製到app,達到複製容器檔案的目的。

-v 表示掛載資料卷,格式是 -v localPath:containerPath  本地目錄:容器目錄

$("pwd") 表示當前目錄的路徑,具體自己控制檯輸入 echo $("pwd") 嘗試。

-e 引數必須有 否則容器無法啟動

輸入docker ps -a 檢視status是Up的就算啟動成功

第三步:複製配置目錄到本地

docker exec -it tempMysql /bin/bash 進入容器命令列,

通過指令:cp -r /etc/mysql /app 指令把etc目錄下的mysql資料夾,複製到app目錄下,由於之前做了本地同步,所以能看到本地資料夾內有mysql資料夾,如下

 

第四步:刪除容器並建立新容器再同步配置目錄

通過docker stop tempMysql 停止容器,通過docker rm tempMysql 刪除容器,然後本地進入mysql資料夾和容器中的mysql資料夾做同步。

docker run -d -p 3306:3306 -v $("pwd):/etc/mysql 

--name localMysql -e MYSQL_ROOT_PASSWORD=123456 mysql 

成功啟動呦~~,雖然不知道是不是姿勢不對,這麼大費周章。。。