Docker部署MySQL鏡像的保姆級(jí)教程
1、安裝Docker
Docker的安裝可參考:如何在Ubuntu安裝docker以及一些常見(jiàn)報(bào)錯(cuò)
2、創(chuàng)建掛載目錄
# 創(chuàng)建宿主機(jī)mysql掛載目錄 sudo mkdir -p /data/docker/mysql/config
?3、準(zhǔn)備配置文件
# 1.創(chuàng)建配置文件 sudo touch /data/docker/mysql/config/my.cnf
配置文件的內(nèi)容如下:
[mysqld] # 設(shè)置3306端口 port=3306 # 允許最大連接數(shù) max_connections=1000 # 允許連接失敗的次數(shù)。這是為了防止有人從該主機(jī)試圖攻擊數(shù)據(jù)庫(kù)系統(tǒng) max_connect_errors=100 # 服務(wù)端使用的字符集默認(rèn)為UTF8 character-set-server=utf8mb4 # 創(chuàng)建新表時(shí)將使用的默認(rèn)存儲(chǔ)引擎 default-storage-engine=INNODB #是否對(duì)sql語(yǔ)句大小寫(xiě)敏感,1表示不敏感 lower_case_table_names = 1 #MySQL連接閑置超過(guò)一定時(shí)間后(單位:秒)將會(huì)被強(qiáng)行關(guān)閉 #MySQL默認(rèn)的wait_timeout 值為8個(gè)小時(shí), interactive_timeout參數(shù)需要同時(shí)配置才能生效 interactive_timeout = 1800 wait_timeout = 1800 #Metadata Lock最大時(shí)長(zhǎng)(秒), 一般用于控制 alter操作的最大時(shí)長(zhǎng)sine mysql5.6 #執(zhí)行 DML操作時(shí)除了增加innodb事務(wù)鎖外還增加Metadata Lock,其他alter(DDL)session將阻塞 lock_wait_timeout = 3600 #內(nèi)部?jī)?nèi)存臨時(shí)表的最大值。 #比如大數(shù)據(jù)量的group by ,order by時(shí)可能用到臨時(shí)表, #超過(guò)了這個(gè)值將寫(xiě)入磁盤(pán),系統(tǒng)IO壓力增大 tmp_table_size = 64M max_heap_table_size = 64M # === 日志相關(guān) === ## >>> 錯(cuò)誤日志 # 錯(cuò)誤日志存放文件,默認(rèn) datadir 目錄下 log_error=/var/log/mysql/log-error.log # 開(kāi)啟事務(wù)中所有死鎖的InnoDB信息記錄在錯(cuò)誤日志中 innodb_print_all_deadlocks=ON ## >>> 二進(jìn)制日志 # 二進(jìn)制日志文件基礎(chǔ)名稱(chēng)以及路徑,默認(rèn) datadir 目錄下 log_bin=/var/log/mysql/log-bin ## >>> 慢查詢(xún)?nèi)罩? # 開(kāi)啟慢查詢(xún)?nèi)罩?,默認(rèn)OFF,建議開(kāi)發(fā)和測(cè)試環(huán)境開(kāi)啟 slow_query_log=ON # 慢查詢(xún)?nèi)罩疚募恢? slow_query_log_file=/var/log/mysql/log-slow.log # 慢查詢(xún)時(shí)間閾值,默認(rèn)10,單位:秒 long_query_time=10 [mysql] # 設(shè)置mysql客戶(hù)端默認(rèn)字符集 default-character-set=utf8mb4 [client] # 設(shè)置mysql客戶(hù)端連接服務(wù)端時(shí)默認(rèn)使用的端口 port=3306 default-character-set=utf8mb4
4、運(yùn)行MySQL容器
# 1.拉取鏡像 sudo docker pull mysql:8.0.40 # 2.啟動(dòng)鏡像 sudo docker run --privileged=true --net=bridge \ -p 3306:3306 \ --name mysql \ -v /data/docker/mysql/data:/var/lib/mysql \ -v /data/docker/mysql/config:/etc/mysql/conf.d \ -v /data/docker/mysql/log:/var/log/mysql \ -e MYSQL_ROOT_PASSWORD=root@123 \ -e TZ=Asia/Shanghai \ -d mysql:8.0.40
參數(shù)解析如下:
| 參數(shù) | 參數(shù)說(shuō)明 |
| docker run | 運(yùn)行 Docker 容器 |
| --name mysql | 設(shè)置容器的名稱(chēng)為mysql |
| -d mysql:8.0.40 | 后臺(tái)運(yùn)行mysql容器 |
| --privileged=true | Docker會(huì)賦予容器幾乎與宿主機(jī)相同的權(quán)限 |
| --net=bridge | 網(wǎng)絡(luò)模式配置,默認(rèn)是bridge,bridge表示使用容器內(nèi)部配置網(wǎng)絡(luò) |
| -p 3306:3306 | 將主機(jī)的 3306 端口映射到容器的 3306 端口 |
| -e MYSQL_ROOT_PASSWORD=root@123 | 設(shè)置 mysql 的管理員賬號(hào)密碼為 root@123 |
| -e TZ=Asia/Shanghai | 設(shè)置容器的時(shí)區(qū)為上海時(shí)間,便于處理時(shí)間相關(guān)的數(shù)據(jù) |
| -v /data/docker/mysql/data:/var/lib/mysql | 將主機(jī)data目錄掛載到容器內(nèi),用于數(shù)據(jù)持久化 |
| -v /data/docker/mysql/log:/var/log/mysql | 將主機(jī)log目錄掛載到容器內(nèi),用于日志文件持久化 |
| -v /data/docker/mysql/config:/etc/mysql/conf.d | 將主機(jī)中 /data/docker/mysql/config 目錄映射到容器內(nèi)的 /etc/mysql/conf.d 目錄,這樣可以提供自定義的 mysql 配置文件 |
5、Compose運(yùn)行MySQL容器
創(chuàng)建docker-compose.yml文件
sudo touch /data/docker/mysql/docker-compose.yml
文件內(nèi)容如下:
version: '3'
services:
mysql:
image: mysql:8.0.40
container_name: mysql
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root@123
TZ: Asia/Shanghai
volumes:
- /data/docker/mysql/data:/var/lib/mysql
- /data/docker/mysql/config:/etc/mysql/conf.d
- /data/docker/mysql/log:/var/log/mysql
privileged: true
network_mode: "bridge"運(yùn)行容器
#-f:調(diào)用文件,-d:開(kāi)啟守護(hù)進(jìn)程 sudo docker compose -f /data/docker/mysql/docker-compose.yml up -d
6、查看MySQL運(yùn)行狀態(tài)


7、常見(jiàn)問(wèn)題
?7.1、用DBeaver 連接數(shù)據(jù)庫(kù)的時(shí)候出現(xiàn)Public Key Retrieval is not allowed
解決方案:連接設(shè)置 - 驅(qū)動(dòng)屬性 ,找到allowPublicKeyRetrieval,把a(bǔ)llowPublicKeyRetrieval的值設(shè)為 切換為 true 即可。

以上就是Docker部署MySQL鏡像的保姆級(jí)教程的詳細(xì)內(nèi)容,更多關(guān)于Docker部署MySQL鏡像的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Docker部署Mysql,.Net6,Sqlserver等容器
這篇文章介紹了Docker部署Mysql,.Net6,Sqlserver等容器的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12
Docker MySQL無(wú)法被宿主機(jī)訪(fǎng)問(wèn)的問(wèn)題解決
本文主要介紹了Docker MySQL無(wú)法被宿主機(jī)訪(fǎng)問(wèn)的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
Docker容器搭建android編譯環(huán)境的實(shí)踐記錄
這篇文章主要介紹了Docker容器搭建android編譯環(huán)境的實(shí)踐記錄,主要包括部署容器、鏡像管理、容器管理等相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07

