环境:centos7.9、docker20.10.7、mysql5.7镜像
1)关闭防火墙:
systemctl stop firewalld.service
systemctl stop iptables 或者 iptables -F
重启docker:systemctl restart docker
2)在宿主机目录先创建一个my.cnf文件,空文件也行,不然待会儿在映射的时候会把my.cnf挂载成目录
touch /docker/mysql/conf/my.cnf
3)运行mysql5.7镜像
执行docker命令:
docker run -it --name mysql \
-p 3307:3306 \
--privileged=true \
--restart=always \
-v /docker/mysql/conf/my.cnf:/etc/my.cnf \
-v /docker/mysql/data:/var/lib/mysql \
-e TZ='Asia/Shanghai' \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_general_ci \
--lower_case_table_names=1
查看容器是否正确运行:
docker ps | grep mysql
查看容器日志:
docker logs mysql
释义:
--privileged=true 开启docker特权模式,mysql容器起来后可以直接使用远程工具连接,无需再加入额外的mysql命令允许远程用户访问
--restart=always 允许mysql容器随docker启动而启动
-v 参数,容器与宿主机挂载,形成数据卷映射,这样当你的容器意外被删除,数据仍然得以保留在宿主机上
例如:-v /xxx:/xxx 冒号前面的是宿主机目录,后面是容器目录
-v /docker/mysql/conf/my.cnf:/etc/my.cnf 映射配置文件,如果本地没有,可以创建个空文件
-v /docker/mysql/data:/var/lib/mysql 映射docker的数据目录,你们可以自定义映射目录,后面如果你要进行特定数据备份,那么可以把备份脚本的执行结果重定向到容器的/var/lib/mysql目录,这样你就能直接在宿主机目录/docker/mysql/data中看到你的数据库备份文件