Docker部署MySQL镜像的保姆级教程

 更新时间:2025年06月05日 11:04:32   作者:大饼酥  
docker是一种容器化技术,可以将应用程序及其依赖项打包成一个独立的可移植容器,mysql是一个流行的关系型数据库管理系统,在Docker中部署MySQL镜像可以方便地创建和管理MySQL数据库实例,本文给大家介绍了Docker部署MySQL镜像的教程,需要的朋友可以参考下

1、安装Docker

Docker的安装可参考:如何在Ubuntu安装docker以及一些常见报错

2、创建挂载目录

# 创建宿主机mysql挂载目录
sudo mkdir -p /data/docker/mysql/config

​3、准备配置文件

# 1.创建配置文件
sudo touch /data/docker/mysql/config/my.cnf

配置文件的内容如下:

[mysqld]
# 设置3306端口
port=3306
# 允许最大连接数
max_connections=1000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=100
# 服务端使用的字符集默认为UTF8
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names = 1
#MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
#MySQL默认的wait_timeout  值为8个小时, interactive_timeout参数需要同时配置才能生效
interactive_timeout = 1800
wait_timeout = 1800
#Metadata Lock最大时长(秒), 一般用于控制 alter操作的最大时长sine mysql5.6
#执行 DML操作时除了增加innodb事务锁外还增加Metadata Lock,其他alter(DDL)session将阻塞
lock_wait_timeout = 3600
#内部内存临时表的最大值。
#比如大数据量的group by ,order by时可能用到临时表,
#超过了这个值将写入磁盘,系统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,建议开发和测试环境开启
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

参数解析如下:

参数参数说明
docker run运行 Docker 容器
--name mysql设置容器的名称为mysql
-d mysql:8.0.40后台运行mysql容器
--privileged=trueDocker会赋予容器几乎与宿主机相同的权限
--net=bridge网络模式配置,默认是bridge,bridge表示使用容器内部配置网络
-p 3306:3306将主机的 3306 端口映射到容器的 3306 端口
-e MYSQL_ROOT_PASSWORD=root@123设置 mysql 的管理员账号密码为 root@123
-e TZ=Asia/Shanghai设置容器的时区为上海时间,便于处理时间相关的数据
-v /data/docker/mysql/data:/var/lib/mysql将主机data目录挂载到容器内,用于数据持久化
-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容器

创建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运行状态

7、常见问题

​7.1、用DBeaver 连接数据库的时候出现Public Key Retrieval is not allowed

解决方案:连接设置 - 驱动属性 ,找到allowPublicKeyRetrieval,把allowPublicKeyRetrieval的值设为 切换为 true 即可。

以上就是Docker部署MySQL镜像的保姆级教程的详细内容,更多关于Docker部署MySQL镜像的资料请关注脚本之家其它相关文章!

相关文章

  • docker运行项目的方法

    docker运行项目的方法

    在本篇文章里小编给大家分享的是关于docker运行项目的方法和实例,需要的朋友们学习参考下。
    2020-03-03
  • docker-compose简单使用方法详解

    docker-compose简单使用方法详解

    Compose通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,这篇文章主要介绍了docker-compose简单使用方法,需要的朋友可以参考下
    2022-10-10
  • Docker如何查看镜像里的文件

    Docker如何查看镜像里的文件

    文章介绍了如何在开发过程中检查Docker镜像中的文件是否符合预期,步骤包括下载镜像、创建并运行临时容器查看内容,以及停止和删除临时容器
    2024-11-11
  • Docker部署Mysql,.Net6,Sqlserver等容器

    Docker部署Mysql,.Net6,Sqlserver等容器

    这篇文章介绍了Docker部署Mysql,.Net6,Sqlserver等容器的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-12-12
  • 使用Docker Swarm 搭建Wordpress的方法

    使用Docker Swarm 搭建Wordpress的方法

    这篇文章主要介绍了使用Docker Swarm 搭建Wordpress的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • docker 挂载、修改文件的步骤

    docker 挂载、修改文件的步骤

    这篇文章主要介绍了docker 挂载、修改文件的步骤,咱们使用的是docker的 copy 命令从容器中 copy 出来相关的配置文件,在本地修改,修改完毕在使用docker的 copy 命令从本地 copy 到容器中,重启容器生效的,需要的朋友可以参考下
    2023-03-03
  • docker-compose使用中遇到的坑及解决

    docker-compose使用中遇到的坑及解决

    这篇文章主要介绍了docker-compose使用中遇到的坑及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Docker MySQL无法被宿主机访问的问题解决

    Docker MySQL无法被宿主机访问的问题解决

    本文主要介绍了Docker MySQL无法被宿主机访问的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Docker的四种网络模式

    Docker的四种网络模式

    这篇文章介绍了Docker的四种网络模式,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • Docker容器搭建android编译环境的实践记录

    Docker容器搭建android编译环境的实践记录

    这篇文章主要介绍了Docker容器搭建android编译环境的实践记录,主要包括部署容器、镜像管理、容器管理等相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07

最新评论