安装Docker Engine
官方参考文档:https://docs.docker.com/engine/install/centos/
若之前有安装docker,需要先卸载之前的docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装必要的依赖
sudo yum install -y yum-utils
设置docker仓库
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
查看可以安装的docker版本
yum list docker-ce --showduplicates | sort -r
安装最新的或者指定的docker版本
最新的:sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
指定的:sudo yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io docker-compose-plugin
启动docker并设置为开机启动
sudo systemctl start docker && sudo systemctl enable docker
测试docker是否安装成功
sudo docker run hello-world
出现 Hello from Docker! 表示docker安装成功!
配置docker的镜像加速器
先进入到/etc/docker, 找到daemon.json文件,打开文件配置镜像加速器地址。(没有的话需要自己创建目录和json文件。)
{
"registry-mirrors":["https://rsbud4vc.mirror.aliyuncs.com","https://docker.mirrors.ustc.edu.cn","http://hub-mirror.c.163.com","http://qtid6917.mirror.aliyuncs.com","https://rncxm540.mirror.aliyuncs.com","https://e9yneuy4.mirror.aliyuncs.com","https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors"]
}
下载image镜像并创建docker容器实例
下载mysql的image镜像
docker pull mysql:5.7
查看下载的镜像
docker images
根据镜像创建docker容器
docker run -d -p 3306:3306 --privileged=true -v /usr/local/mysql/log:/var/log/mysql -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=abc123456 --name mysql mysql:5.7
查看创建的docker容器实例
docker ps
出现如上的容器实例ID和容器实例名mysql的信息表示 docker启动mysql容器成功!
进入到docker容器实例修改访问权限
进入到docker容器实例中
docker exec -it mysql /bin/bash
mysql5.7版本支持远程Ip访问需要修改访问授权
mysql> grant all privileges on *.* to root@"%" identified by "abc123456" with grant option;
刷新权限集
mysql> flush privileges;
修改完成后输入exit退出容器实例,返回到宿主机上
进入docker修改my.conf配置
进入到/etc/mysql/conf.d 下修改 my.conf文件的配置
或者修改宿主机上的配置文件可以映射修改容器内的配置(/usr/local/mysql/conf/my.conf)
[client]
default_character_set=utf8
[mysqld]
collation_server=utf8_general_ci
character_set_server=utf8
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
打开防火墙端口
查询防火墙是否打开
systemctl firewall status
出现active 或者running 或者 enabled表示防火墙已打开。
查询对应端口是否已经开放防火墙
firewall-cmd --query-port=3306/tcp
打开对应端口的防火墙控制规则
firewall-cmd --zone=public --add-port=3306/tcp --permanent
刷新防火墙规则
firewall-cmd --reload
查询已经打开的防火墙端口列表
firewall-cmd --list-port
使用本地telnet ip port测试远程服务器的端口是否已经打开防火墙限制!
远程连接测试
使用navicat连接mysql数据库是否成功。