一、 拉取mysql镜像
搜索镜像
docker search mysql
拉取镜像,没有指定版本的话,默认是最新的
docker pull mysql
指定版本拉取镜像
docker pull mysql:5.7
注:有可能镜像下载比较慢,可以配置国内镜像地址
cd /etc/docker
# 编辑daemon.json文件,没有的话保存后会创建
vim daemon.json
加入
{
“registry-mirrors”: [“https://registry.dockercn.com”,“https://mj9kvemk.mirror.aliyuncs.com”]
}
重启docker
systemctl restart docker.service
然后再拉取镜像,速度会比较快
二、运行容器
docker run -p 3306:3306 --name mysql -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=123 -d mysql:latest
参数注释
-p 关联容器内外端口
–name 运行容器名称
-v 将容器内的文件绑定到容器外的文件上(前面是容器外路径),方便修改或者查询文件,不必每次都进入到容器之中
-e 设置环境变量,此处设置的是root的访问密码
三、可能遇到的问题
连接不上
先试试本机能否连接
#进入mysql容器内
docker exec -it mysql /bin/bash
#使用mysql客户端连接mysql
mysql -uroot -p123
如果本机无法能连接mysql,但是远程无法连接,可能需要检查如下设置
1.检查root用户的允许访问主机
本机连上mysql
use mysql;
-- 查询用户及用户允许访问主机
-- 如果host为%,则表示允许所有ip连接,
-- 如果是localhost,则表示只允许本机连接
select user, host from user;
2.服务器是否开启防火墙,如果开启,需要放开3306端口
服务器端口开放可参考文章linux端口开放
3.如果是云服务器,阿里云、腾讯云、百度云…这些,需要前往控制台,配置安全组,添加允许3306端口访问规则;