环境:Centos7.6,Docker
本人部署Docker教程地址
1.拉取镜像
在线拉取镜像
命令:docker pull mysql:8.1
服务器无网情况下:
第一步:在一台有网的Linux服务器上在线拉取镜像
命令:docker pull mysql:8.1
第二步:导出镜像到本地
命令:docker save -o /home/mysql.tar mysql
导出的镜像在/home目录下
第三步:将镜像包移动到U盘并上传到无网服务器/home目录下,在无网服务器下执行拉取本地镜像命令
命令:docker load -i /home/mysql.tar
2.创建持久化存储,日志,配置文件目录
第一步:创建存储目录,日志目录,配置文件目录
命令:mkdir -p /home/mysql/{conf,data,log}
第二步:创建MySQL配置文件
命令:touch /home/mysql/conf/my.cnf
第三步:写入以下配置文件内容
命令:vim /home/mysql/conf/my.cnf
[client] #设置客户端默认字符集utf8mb4 default-character-set=utf8mb4 [mysql] #设置服务器默认字符集为utf8mb4 default-character-set=utf8mb4 [mysqld] #配置服务器的服务号,具备日后需要集群做准备 server-id = 1 #开启MySQL数据库的二进制日志,用于记录用户对数据库的操作SQL语句,具备日后需要集群做准备 log-bin=mysql-bin #设置清理超过30天的日志,以免日志堆积造过多成服务器内存爆满 expire_logs_days=30 #解决MySQL8.0版本GROUP BY问题 sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' #允许最大的连接数 max_connections=1000 # 禁用符号链接以防止各种安全风险 symbolic-links=0 # 设置东八区时区 default-time_zone = '+8:00'
第四步:赋予目录权限
chmod 777 /home/mysql/data/ /home/mysql/log
chmod 644 /home/mysql/conf/my.cnf
my.cnf配置文件必须设置644权限,设置777在登录mysql时报警告配置文件无法生效。
3.启动MySQL镜像
启动镜像命令:
docker run -p 3306:3306 --restart=always --name mysql --privileged=true -v /home/mysql/log:/var/log/mysql -v /home/mysql/data:/var/lib/mysql -v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.1 --lower-case-table-names=1
解析:
-p:主机端口:容器端口。
-d:启动的镜像名称。
--name:设置容器名称。
--privileged=true:赋予容器权限修改宿主文件权利。
--restart=always:设置docker启动时,容器跟随自启。
--lower-case-table-names=1:用于指定表名是否进行大小写不敏感的处理。
-e MYSQL_ROOT_PASSWORD=123456:设置MySQL的root用户的密码。
-v /home/mysql/log:/var/log/mysql:挂载容器日志到宿主,方便查看日志。
-v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf:挂载容器配置文件到宿主,方便修改配置文件。
-v /home/mysql/data:/var/lib/mysql:挂载容器存储文件到宿主,避免因不小心卸载容器或者容器损坏导致数据丢失不可找回风险。
4.开启防火墙
第一步:开启指定防火墙端口命令:
命令:firewall -cmd --add-list=3306/tcp --permanent
第二步:刷新防火墙
命令:firewall-cmd --reload