1.docker拉取mysql镜像
从docker hub拉取5.7.37版本的mysql镜像
docker pull mysql:5.7.37
查看拉取的镜像
docker images
2.配置mysql
先在宿主机上创建三个文件夹
mkdir -p /opt/mysql/conf && mkdir -p /opt/mysql/data && mkdir -p /opt/mysql/log
进入conf目录并创建my.cnf文件
cd conf
vi my.cnf
写入配置:
[mysqld]
skip-name-resolve
character_set_server=utf8
datadir=/var/lib/mysql
server-id=1000
mysql 的默认配置在 /etc/mysql/my.cnf,其中子配置为/etc/mysql/conf.d或/etc/mysql/mysql.conf.d,即在/etc/mysql/my.cnf引入,不建议宿主机挂载目录直接覆盖/etc/mysql/my.cnf 而是挂载到在容器内conf.d目录下配置子配置文件.
3.docker创建mysql容器
docker run \
--name mysql \
-p 3306:3306 \
--restart=always \
-e MYSQL_ROOT_PASSWORD=tsq123456 \
-v /opt/mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf \
-v /opt/mysql/data:/var/lib/mysql \
-v /opt/mysql/log:/var/log/mysql \
-d mysql:5.7.37
–name:容器名称;
-p:端口映射,将容器的端口映射到宿主机端口(宿主机:容器)
–restart=always : 当Docker 重启时,容器会自动启动;
-e 设置参数 MYSQL_ROOT_PASSWORD 指定mysql登录密码;
-v 将宿主机目录挂载到容器mysql中的目录:配置文件、日志、数据;
-d: 后台运行容器。
返回容器id;
注意:尽量把参数 -d mysql:5.7.37 放最后不然有可能不能正常运行成功,具体原因不清楚,可能参数有顺序要求的原因吧。
查看容器是否正常运行
docker ps -a
容器正常运行状态:
容器异常终止状态:
如果容器发生了异常,查看报错日志:
docker logs mysql
3.客户端连接mysql
进入mysql容器内
docker exec -it mysql bash
命令行连接mysql
mysql -u root -p
Navicat连接mysql
如果是云服务器还需要配置安全组: