手把手教你用docker安装部署mysql8.0+、nacos教程
手把手教你用docker安装部署mysql8.0+、nacos教程
引言
由于目前很多博主介绍了docker安装部署mysql8,但是其中会遇到一些问题,对于新手来说也算比较坎坷,在此,本人更新一篇文章手把手教你怎么使用docker部署mysql8.0+,希望能减少读者在开发过程中遇到的问题。
一、准备工作
已安装Docker
二、下载mysql8.0docker镜像
docker pull mysql:8.0
三、查看下载的docker镜像
我这里下载了两个版本
四、创建挂载目录
mkdir -p /data/mysql/conf
mkdir -p /data/mysql/data
mkdir -p /data/mysql/logs
五、创建my.cnf文件,放在 /data/mysql/conf 目录中,注意配置文件中的端口号、字符集、时区
vi /data/mysql/conf/my.cnf
复制如下内容到my.cnf:
[client]
port = 3308
default-character-set = utf8mb4
[mysql]
port = 3308
default-character-set = utf8mb4
[mysqld]
# bind-address = 0.0.0.0
# port = 3306
max_connections=10000
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# 设置时区和字符集
# default-time-zone='+8:00'
character-set-client-handshake=FALSE
init_connect='SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci'
gtid-mode=ON
enforce-gtid-consistency = ON
六、启动镜像
6.1 启动命令
–lower_case_table_names=1 :忽略大小写
docker run --restart=always --name mysql3309.8.0.18 -v /data/mysql3309/conf:/etc/mysql -v /data/mysql3309/data:/var/lib/mysql -v /data/mysql3309/log:/var/log -v /data/mysql3309/mysql-files:/var/lib/mysql-files -p 3309:3306 -e MYSQL_ROOT_PASSWORD='123456' -d mysql:8.0.18 --lower_case_table_names=1
6.2 命令分析
docker run: 启动一个新的Docker容器。
--restart=always: 设置容器的重启策略。这里指定为always,意味着无论容器退出的原因是什么(包括手动停止),Docker都会自动重启该容器。
--name mysql3309.8.0.18: 为新创建的容器指定名称为mysql3309.8.0.18,便于管理和识别。
-v /data/mysql3309/conf:/etc/mysql: 使用数据卷(volume)挂载。将主机目录/data/mysql3309/conf挂载到容器内的/etc/mysql目录,用于存放MySQL的配置文件。这样,对主机目录的更改将反映在容器内,便于自定义配置。
-v /data/mysql3309/data:/var/lib/mysql: 将主机目录/data/mysql3309/data挂载到容器内的/var/lib/mysql目录,用于存放MySQL的数据文件。这样,即使容器停止或重新创建,数据库数据也能得以保留。
-v /data/mysql3309/log:/var/log: 将主机目录/data/mysql3309/log挂载到容器内的/var/log目录,用于存放MySQL的日志文件。这样,可以在主机上直接查看和管理日志。
-v /data/mysql3309/mysql-files:/var/lib/mysql-files: 将主机目录/data/mysql3309/mysql-files挂载到容器内的/var/lib/mysql-files目录,这是MySQL用来存储上传的文件(如LOAD DATA INFILE操作)的特殊目录。
-p 3309:3306: 端口映射。将主机的3309端口映射到容器内的3306端口,使得外部可以通过主机的3309端口访问到容器内的MySQL服务。
-e MYSQL_ROOT_PASSWORD='123456': 设置环境变量。这里设置了MySQL的root用户密码为123456。Docker镜像会在初始化时读取这个环境变量来设置MySQL的root密码。
-d mysql:8.0.18: 以守护(detached)模式运行容器,并指定使用的镜像为mysql:8.0.18。这意味着容器将在后台运行,并且不会将输出附加到当前终端。
--lower_case_table_names=1: 传递给容器内MySQL服务的启动参数。这里设置了lower_case_table_names参数为1,表示在MySQL中将所有表名转换为小写,不论创建时使用何种大小写。这对于在不区分大小写的文件系统(如某些Linux系统)上运行MySQL,并希望在不同大小写敏感的环境中保持表名一致性非常有用。
七、解决无法登录mysql问题
本人用DBeaver链接刚创建的mysql8,报错如下:
IP、端口/用户名、密码都没有问题,在docker里面登录没有问题:
原来如果用户使用了 sha256_password 认证,密码在传输过程中必须使用 TLS 协议保护,但是如果 RSA 公钥不可用,可以使用服务器提供的公钥;可以在连接中通过 ServerRSAPublicKeyFile 指定服务器的 RSA 公钥,或者AllowPublicKeyRetrieval=True参数以允许客户端从服务器获取公钥;但是需要注意的是 AllowPublicKeyRetrieval=True可能会导致恶意的代理通过中间人攻击(MITM)获取到明文密码,所以默认是关闭的,必须显式开启。
只需要修改如下位置,将false改为true即可访问:
八、拉取 Nacos Docker 镜像
8.1拉取 Nacos 镜像:
docker pull nacos/nacos-server
以上是 Docker Hub 上拉取最新的 Nacos 镜像。如果你希望拉取特定版本,可以指定版本号,例如:
docker pull nacos/nacos-server:v2.1.2
8.2运行 Nacos 容器
你可以使用以下命令启动 Nacos 容器。这里我们将以 standalone 模式启动 Nacos:
docker run -d \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
-p 8848:8848 \
--name nacos \
--restart=always \
nacos/nacos-server:v2.1.2
命令解释:
-d:后台运行容器。
-e MODE=standalone:设置 Nacos 运行模式为单机模式(standalone)。
-e PREFER_HOST_MODE=hostname:设置 Nacos 偏好使用主机名。
-p 8848:8848:将 Nacos 容器的端口 8848 映射到主机的端口 8848。
–name nacos:给容器命名为 nacos。
–restart=always:重启docker时,自动启动相关容器。
nacos/nacos-server:2.0.3:指定使用的镜像和版本。
8.3访问 Nacos 控制台
http://<your-server-ip>:8848/nacos
默认的登录用户名和密码是:
用户名:nacos
密码:nacos
8.4查看容器日志
docker logs nacos
8.5配置持久化(可选)
docker run -d \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
-p 8848:8848 \
-v /path/to/your/local/data:/home/nacos/data \
--name nacos \
--restart=always \
nacos/nacos-server:2.0.3
在这个命令中,/path/to/your/local/data 是你宿主机上用于存储数据的目录。
更多推荐

所有评论(0)