Docker部署MySQL鏡像的完整指南
更新時間:2025年07月11日 10:28:01 作者:慕木兮人可
這篇文章主要為大家詳細介紹了使用Docker部署MySQL鏡像的相關(guān)知識,文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的小伙伴可以了解下
1.拉取鏡像
# 拉取指定版本的MySQL鏡像 docker pull mysql:8.0
2.創(chuàng)建掛載目錄
# 自己創(chuàng)建好如下三個文件夾 路徑任意 [root@iZuf6aigs7rxe6f6oifq7vZ mysql]# ll 總用量 12 drwxr-xr-x 2 root root 4096 7月 7 10:25 config drwxr-xr-x 2 root root 4096 6月 26 16:43 data drwxr-xr-x 2 root root 4096 6月 26 17:15 log
3.創(chuàng)建配置文件my.cnf
[client] # 客戶端默認字符集 default-character-set=utf8mb4 [mysql] # 設置服務器默認字符集 default-character-set=utf8mb4 # 設置校驗規(guī)則 collation-server=utf8mb4_general_ci # 連接字符集 init_connect = 'SET NAMES utf8mb4' [mysqld] server-id = 1 port = 3306 default-storage-engine = InnoDB # 允許最大的連接數(shù) max_connections=1000 # 解決8.0版本 GROUP BY問題 sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' # 設置東八區(qū)時區(qū) default-time_zone = '+8:00' # 最大錯誤連接數(shù)(達到后阻止主機連接) max_connect_errors = 100 # 連接超時時間(秒) connect_timeout = 60
更多可選配置
[client] # 客戶端默認字符集 default-character-set = utf8mb4 [mysql] # MySQL命令行客戶端默認字符集 default-character-set = utf8mb4 [mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_general_ci # 服務器唯一ID(主從復制時需要) server-id = 1 # 服務端口 port = 3306 # 數(shù)據(jù)目錄 datadir = /var/lib/mysql # socket文件位置 socket = /var/run/mysqld/mysqld.sock # 錯誤日志位置 log-error = /var/log/mysql/error.log # 進程ID文件位置 pid-file = /var/run/mysqld/mysqld.pid # 默認存儲引擎 default-storage-engine = InnoDB # 默認認證插件(兼容舊版客戶端) default_authentication_plugin = mysql_native_password # 跳過名稱解析(提高連接速度) skip-name-resolve ### 字符集設置 ### # 服務器默認字符集 character-set-server = utf8mb4 # 服務器默認排序規(guī)則 collation-server = utf8mb4_0900_ai_ci # 連接字符集 init_connect = 'SET NAMES utf8mb4' ### 連接設置 ### # 最大連接數(shù)(根據(jù)業(yè)務需求調(diào)整) max_connections = 1000 # 最大錯誤連接數(shù)(達到后阻止主機連接) max_connect_errors = 100 # 連接超時時間(秒) connect_timeout = 10 # 交互式連接超時(秒) interactive_timeout = 28800 # 非交互式連接超時(秒) wait_timeout = 28800 ### 內(nèi)存設置 ### # 每個連接的緩沖區(qū)大小 sort_buffer_size = 4M # 每個連接的讀緩沖區(qū)大小 read_buffer_size = 2M # 每個連接的隨機讀緩沖區(qū)大小 read_rnd_buffer_size = 8M # 連接線程緩沖區(qū)大小 join_buffer_size = 8M # 線程堆棧大小 thread_stack = 256K # 臨時表內(nèi)存大小 tmp_table_size = 64M # 內(nèi)存臨時表最大值 max_heap_table_size = 64M ### InnoDB設置 ### # InnoDB緩沖池大?。ńㄗh為物理內(nèi)存的50-70%) innodb_buffer_pool_size = 2G # InnoDB緩沖池實例數(shù)(每個1GB左右) innodb_buffer_pool_instances = 2 # InnoDB日志文件大小(建議256M-2G) innodb_log_file_size = 512M # InnoDB日志緩沖區(qū)大小 innodb_log_buffer_size = 16M # InnoDB刷新日志方式(O_DIRECT避免雙緩沖) innodb_flush_method = O_DIRECT # InnoDB事務提交方式(1最安全但最慢,2折中,0最快但不安全) innodb_flush_log_at_trx_commit = 1 # InnoDB IO線程數(shù) innodb_read_io_threads = 4 innodb_write_io_threads = 4 # InnoDB死鎖檢測 innodb_deadlock_detect = ON # InnoDB鎖等待超時(秒) innodb_lock_wait_timeout = 50 # InnoDB嚴格模式 innodb_strict_mode = ON ### 日志設置 ### # 慢查詢?nèi)罩? slow_query_log = 1 # 慢查詢?nèi)罩疚募恢? slow_query_log_file = /var/log/mysql/mysql-slow.log # 慢查詢閾值(秒) long_query_time = 2 # 記錄未使用索引的查詢 log_queries_not_using_indexes = 1 # 二進制日志格式(ROW格式最安全) binlog_format = ROW # 二進制日志過期天數(shù) expire_logs_days = 7 # 二進制日志大小 max_binlog_size = 100M ### 安全設置 ### # 禁止LOAD DATA LOCAL INFILE(防止安全風險) local_infile = 0 # 禁止符號鏈接 symbolic-links = 0 # 密碼驗證策略 validate_password.policy = MEDIUM # 密碼最小長度 validate_password.length = 8 # 密碼混合大小寫要求 validate_password.mixed_case_count = 1 # 密碼數(shù)字要求 validate_password.number_count = 1 # 密碼特殊字符要求 validate_password.special_char_count = 1 # 禁止舊密碼認證 secure_auth = ON ### 其他優(yōu)化 ### # 表定義緩存 table_open_cache = 2000 # 表定義緩存實例數(shù) table_definition_cache = 1400 # 打開文件限制 open_files_limit = 65535 # 最大允許數(shù)據(jù)包大小 max_allowed_packet = 64M # 批量插入緩沖區(qū)大小 bulk_insert_buffer_size = 16M # 線程緩存大小 thread_cache_size = 100 # 主機名緩存大小 host_cache_size = 300
4.docker運行命令
# mysql 配置文件位置 # /kiki/mysql/config # /kiki/mysql/data # /kiki/mysql/log # -d 后臺運行 # --name 容器名稱 # --privileged=true 賦予容器特權(quán)模式(訪問主機所有設備) # --restart=always 容器退出時自動重啟(除非明確停止) # -p 3306:3306 將主機的 3310 端口映射到容器的 3306 端口(MySQL 默認端口) # -v /innomind/mysql/data:/var/lib/mysql 掛載數(shù)據(jù)目錄 # -v /innomind/mysql/config:/etc/mysql/conf.d 掛載配置文件目錄 # -v /innomind/mysql/log:/logs 掛載日志目錄 # -e MYSQL_ROOT_PASSWORD=123456:設置 MySQL root 用戶密碼為 "123456" # -e TZ=Asia/Shanghai:設置時區(qū)為亞洲/上海 # --lower_case_table_names=1:設置表名存儲為小寫(1 表示不區(qū)分大小寫) # mysql:8.0 指定要運行的鏡像和版本 docker run -d \ --name mysql8 \ --privileged=true \ --restart=always \ -p 3306:3306 \ -v /kiki/mysql/data:/var/lib/mysql \ -v /kiki/mysql/config:/etc/mysql/conf.d \ -v /kiki/mysql/log:/logs \ -e MYSQL_ROOT_PASSWORD=123456\ -e TZ=Asia/Shanghai mysql:8.0 \ --lower_case_table_names=1
運行即可?。?!
到此這篇關(guān)于Docker部署MySQL鏡像的完整指南的文章就介紹到這了,更多相關(guān)Docker部署MySQL鏡像內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
完美解決Windows10下無法對docker容器進行端口訪問的操作
這篇文章主要介紹了完美解決Windows10下無法對docker容器進行端口訪問的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11docker run啟動的容器掛掉了數(shù)據(jù)怎么辦
這篇文章主要介紹了docker run啟動的容器掛掉了,數(shù)據(jù)怎么辦,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09使用docker?部署mysql突然連接不上的問題及解決方法
這篇文章主要介紹了使用docker?部署mysql,突然連接不上,要解決這個問題需要找到根本原因,對癥治療就好,本文通過圖文實例相結(jié)合給大家介紹的非常詳細,需要的朋友可以參考下2022-06-06詳解ASP.NET Core 網(wǎng)站在Docker中運行
本篇文章主要介紹了詳解ASP.NET Core 網(wǎng)站在Docker中運行,非常具有實用價值,需要的朋友可以參考下2017-05-05