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


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

以上就是Docker部署MySQL鏡像的保姆級教程的詳細內容,更多關于Docker部署MySQL鏡像的資料請關注腳本之家其它相關文章!
相關文章
Jenkins Pipeline中Docker鏡像構建與推送的常見問題及解決方案
在現(xiàn)代 DevOps 實踐中,Jenkins 作為一款流行的持續(xù)集成和持續(xù)交付(CI/CD)工具,被廣泛應用于自動化構建、測試和部署流程,然而,在實際使用 Jenkins Pipeline 進行 Docker 鏡像構建和推送的過程中,可能會遇到各種問題,本文將通過一個具體的案例給大家詳細的介紹一下2025-01-01
容器搭建nextcloud+onlyoffice+https實踐
本文介紹了在CentOS8.5上使用Docker搭建個人網(wǎng)盤應用Nextcloud和OnlyOffice的詳細步驟,包括容器準備、啟動、SSL配置以及在Nextcloud中集成OnlyOffice2026-01-01
docker安裝RabbitMq添加用戶實現(xiàn)方式
這篇文章主要介紹了docker安裝RabbitMq添加用戶實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07
Windows Docker部署Jenkins的實現(xiàn)步驟
Jenkins是一款開源的持續(xù)集成工具,廣泛用于項目開發(fā),能提供自動構建測試部署等功能,本文主要介紹了Windows Docker部署Jenkins的實現(xiàn)步驟,感興趣的可以了解一下2024-03-03

