大概步骤
1. 下载MySQL镜像
2. 创建运行容器
详细步骤
第一步,拉取MySQL镜像
# docker pull mysql
之后docker会自动拉取(下载)MySQL镜像。
注意,若提示拉取失败就重复几次,总有一次会成功的。在上一篇《Docker问题总结》有介绍设置容器仓库的办法。
拉取成功后我们查看一下:
# docker images
第二步,创建并启动一个MySQL容器
输入以下命令:
# docker run --name pwc-mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql
- –name:给新创建的容器命名,此处命名为
pwc-mysql
- -e:配置信息,此处配置
mysql
的root用户
的登陆密码 - -p:端口映射,此处映射
主机3306端口
到容器pwc-mysql的3306端口
- -d:成功启动容器后输出容器的完整ID,例如上图
73f8811f669ee...
- 最后一个
mysql
指的是mysql镜像名字
到这里我们查看容器运行状态:
$ sudo docker ps
上图可以看到容器的简写ID,容器的源镜像,创建时间,状态,端口映射信息,容器名字等。
mysql容器虽然成功了,但有个docker端口映射错误 iptables: No chain/target/match by that name.,
解决方案:输入如下命令,重启docker后解决
[root@localhost ~]# pkill docker
[root@localhost ~]# iptables -t nat -F
[root@localhost ~]# ifconfig docker0 down
[root@localhost ~]# brctl delbr docker0
-bash: brctl: command not found
[root@localhost ~]# yum install bridge-utils [解决brctl: command not found问题]
[root@localhost ~]# brctl delbr docker0
[root@localhost ~]# systemctl restart docker
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMESbcca37f16596 mysql "docker-entrypoint..." 5 seconds ago Up 4 seconds 0.0.0.0:3306
->3306/tcp, 33060/tcp pwc-mysql
此时通过navicat连接Mysql出现Client does not support authentication protocol requested by server错误
解决方案:
1.进入mysql容器
docker exec -it pwc-mysql /bin/bash
2.进入mysql
mysql -uroot -pmima
3.修改密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'passwd';
第三步,测试连接MySQL
这里我使用navicat远程连接,连接MySQL前需要防火墙开放端口或者关闭防火墙。
开放端口:
$ sudo firewall-cmd --add-port=3306/tcp
关闭防火墙:
$ sudo systemctl stop firewalld
接着使用navicat连接
连接成功,也可以进行相关数据库操作,因此MySQL服务搭建成功!