ETH官方钱包

前往
大廳
主題

[Docker] 在Mac M1使用Docker安裝MySQL,並存取本地端資料

帥氣跳蚤蛋 | 2022-01-16 14:52:43 | 巴幣 2 | 人氣 3189

Docker與MySQL目前官方皆已支援M1晶片,
但使用Docker的Mysql官方Image仍會提示不支援該平臺,無法直接安裝,
本文示範(fàn)在Mac M1上的本地端,存取Docker中的MySQL,
並利用本地端的路徑與Docker中MySQL做Bind Mount資料連結(jié),
方便的存取檔案,與永久保存於本地端.

=============================================================================
巴哈小屋的程式碼不易排版,希望有好的閱讀體驗可至,網(wǎng)頁好圖版,Medium部落格:跳蚤的蛋蛋跳蚤蛋
=============================================================================

在Docker中下載MySQL Image,
照一般的安裝方法,使用指令 “docker image pull mysql”,
會出現(xiàn)錯誤訊息,提示不支援a(chǎn)rm64的cpu.

因此將指令加入platform的參數(shù),即可進(jìn)行安裝:
docker image pull — platform linux/x86_64 mysql

下載完成後,可利用“docker image ls”,檢查image是否已在清單中,

=============================================================================

接著將使用Bind Mount的資料連結(jié)方式來創(chuàng)建Container,讓MySQL可存取本地端檔案,並將資料永久保存在本地端,
docker container run — name mysql_source -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d -v ~/Desktop/Docker_MySQL_Folder:/root -v ~/Desktop/Docker_MySQL_Data:/var/lib/mysql mysql:latest

此行命令有幾個參數(shù)可供設(shè)置,其中“{0}”為設(shè)定的變數(shù):
— name {0}: Container的名稱
-p {0}: 本地端與MySQL要連接的Port號,MySQL預(yù)設(shè)為3306
-e MYSQL_ROOT_PASSWORD {0}: 為root的預(yù)設(shè)密碼
-v {0}: /root -v: 為MySQL與本地端存取的資料夾路徑
-v {0}: /var/lib/mysql mysql:latest: 為MySQL放置的本地端路徑

創(chuàng)建Container後,可使用“docker container ls -a”檢查Container ID

並且在本地端Bind Mount的MySQL資料夾,可看見MySQL的檔案,
創(chuàng)建Container時的參數(shù)路徑為:“~/Desktop/Docker_MySQL_Data”

=============================================================================

接著使用“docker exec -it 7e0 sh”進(jìn)入Docker的Linux互動環(huán)境,
其中-it {0}: 為Container的Id,
“7e0”為我剛創(chuàng)建的Container ID,因每個C創(chuàng)建時,會有不同的ID,
可利用上節(jié)的”ls -a”指令查詢Container ID

在Linux環(huán)境下,可登入MySQL囉!登入後,即可看到MySQL的歡迎訊息.
使用”mysql -u root -p“指令來登入root帳號,
密碼為剛才創(chuàng)建Container時的預(yù)設(shè)密碼: my-secret-pw

進(jìn)入MySQL的環(huán)境後,可正常使用MySQL指令囉!
試試”select version();”與”select databases;
MySQL指令都可正常執(zhí)行.

=============================================================================

本節(jié)將藉由Bind Mount的資料夾與MySQL進(jìn)行資料的存取,
首先先創(chuàng)建一個新的database,使用指令“create database TestDatabase;

使用命令“use TestDatabase;”來使用此database

接著建立一個”Bind Mount Test.sql”檔案,內(nèi)容如下所示,
等會在MySQL中使用source指令執(zhí)行該檔案
CREATE TABLE TestTable(
    id INT,
    title VARCHAR(20)
);

INSERT INTO TestTable(id,title) VALUES
(0,"ABC"),
(10,"WWW"),
(87,"Orz");

將“Bind Mount Test.sql”放入,Container創(chuàng)建時的Bind Mount資料夾,
創(chuàng)建Container時的參數(shù)路徑為:”~/Desktop/Docker_MySQL_Folder”

回到MySQL的環(huán)境,用source命令,使用本地端“”Bind Mount Test.sql”檔案,
因在創(chuàng)建Container時,使用本地端的“~/Desktop/Docker_MySQL_Data”與MySQL的” /root”路徑做連結(jié),
所以在MySQL下讀取本地端的檔案,
命令會變成”source /root/Bind Mount Test.sql;

使用“select * from TestTable;
可看到由本地端的.SQL檔案所創(chuàng)建出的table資料

=============================================================================

本節(jié)將使用SQL管理工具”DBeaver”,與在Docker中所建立的MySQL進(jìn)行互動,
使用之前建立的MySQL Container帳號密碼,進(jìn)行資料庫的連線,
連接地址:localhost
port:3306
帳號:root
密碼:my-secret-pw


連線成功後,即可在介面中看到創(chuàng)建的”TestDatabase”與“TestTable”,

=============================================================================

本文在MAC M1的環(huán)境下,建立Docker的MySQL開發(fā)環(huán)境,
並藉由Bind Mount的方式,讓MySQL可與本地端的資料進(jìn)行存取,
可永久保存資料,若Docker Image或Container移除,資料仍會存在,
可將SQL資料移到另一臺電腦進(jìn)行使用,
最後使用SQL管理工具”DBeaver”,與Docker上的MySQL連線,
確認(rèn)可在MAC M1的桌面環(huán)境下開發(fā)MySQL.
送禮物贊助創(chuàng)作者 !
0
留言

創(chuàng)作回應(yīng)

相關(guān)創(chuàng)作

更多創(chuàng)作