MySQL文档地址: https://hub.docker.com/_/mysql/
mysql:[TAG]默认mysql为最新latest版本,添加版本号自定义版本,我选择mysql:5.7.21版本镜像
之后docker会自动拉取(下载)MySQL镜像。
注意:
从Docker官方拉取比较漫长,等待时间长,建议配置阿里云或网易云加速器,从阿里云或网易云仓库拉取镜像
拉取成功后我们查看一下:
$ sudo docker images
输入以下命令:
测试运行mysql: $ sudo docker run --name mysql1 -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:5.7.21 生产环境请把mysql配置文件和数据文件挂在宿主机: $ sudo docker run --restart=always --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -v /opt/mysql/config/my.cnf:/etc/my.cnf -v /opt/mysql/data:/var/lib/mysql -d mysql:5.7.21 解释: run:创建并运行容器 --name mysql:设置运行容器名称 -e MYSQL_ROOT_PASSWORD=123456:设置密码为123456 -p 3306:3306:接收宿主机3306端口信息,打开容器3306端口并映射到3306 -v /opt/mysql/config/my.cnf:/etc/my.cnf:把容器/my.cnf配置信息挂载到宿主机/my.cnf路径 -v /opt/mysql/data:/var/lib/mysql:把容器/mysql数据信息挂载到宿主机/data路径 -d mysql:使用守护进程运行myssl
–name:给新创建的容器命名,此处命名为mysql-e:配置信息,此处配置mysql的root用户的登陆密码-p:端口映射,此处映射主机3306端口到容器mysql的3306端口-d:守护容器后台启动,成功启动容器后输出容器的完整ID,例如上图 a34584af3ba9bb...最后一个mysql指的是mysql镜像名字
到这里我们查看容器运行状态:
$ sudo docker ps
上图可以看到容器的简写ID,容器的源镜像,创建时间,状态,端口映射信息,容器名字等。
这里我使用navicat远程连接,连接MySQL前需要防火墙开放端口或者关闭防火墙。
开放端口:
查看已打开的端口 netstat -anp 查看想开的端口是否已开 # firewall-cmd --query-port=3306/tcp 提示no表示未开 开永久端口号 firewall-cmd --add-port=3306/tcp --permanent 提示 success 表示成功 重新载入配置 # firewall-cmd --reload 比如添加规则之后,需要执行此命令 再次查看想开的端口是否已开 # firewall-cmd --query-port=3306/tcp 提示yes表示成功 若移除端口 # firewall-cmd --permanent --remove-port=3306/tcp关闭防火墙:
查看防火墙状态 # systemctl status firewalld running 状态即防火墙已经开启 dead 状态即防火墙未开启 开启防火墙,# systemctl start firewalld 没有任何提示即开启成功 开启防火墙 # service firewalld start 关闭防火墙 # systemctl stop firewalld centos7.3 上述方式可能无法开启,可以先#systemctl unmask firewalld.service 然后 # systemctl start firewalld.service接着使用SQLyon连接
连接成功,也可以进行相关数据库操作,因此MySQL服务搭建成功!