1.镜像下载
docker pull mysql:5.7
docker pull hub.c.163.com/library/mysql:5.7
2.重命名镜像
docker tag hub.c.163.com/library/mysql:5.7 mysql:5.7
3.创建挂载文件及目录
mkdir -p /opt/docker-mysql/conf.d
4.增加并修改配置文件config-file.cnf
内容如下,设置表名不区分大小写; linux下默认是区分的,windows下默认不区分
[mysqld]
# 表名不区分大小写
lower_case_table_names=1
#server-id=1
datadir=/var/lib/mysql
#socket=/var/lib/mysql/mysqlx.sock
#symbolic-links=0
# sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
5.增加数据文件夹
mkdir -p /opt/docker-mysql/var/lib/mysql
6.启动
docker run --name mysql \
--restart=always \
-p 3306:3306 \
-v /opt/docker-mysql/conf.d:/etc/mysql/conf.d \
-v /opt/docker-mysql/var/lib/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456-abc \
-d mysql:5.7
-d:表示后台运行,不加-d执行上面的命令你就会看到mysql启动的日志信息了
-p:表示端口映射,冒号左面的是我们的宿主机的端口,也就是我们虚拟机的端口,而右侧则表示的是mysql容器内的端口
-name:是我们给mysql容器取的名字
-v:表示挂载路径,$PWD表示当前目录下,冒号左面的表示我们宿主机的挂载目录,也就是我们虚拟机所在的文件路径,冒号右边则表是的是mysql容器在容器内部的路径,上面的命令我分别挂载了my.cnf(mysql的配置文件),如需使用配置文件的方式启动mysql,这里则需要加上,mysql的日志,还有mysql存放数据所在的目录。
7.进入容器
docker exec -it mysql bash
8.备份数据
docker exec mysql sh -c 'exec mysqldump --all-databases -uroot -p"123456-abc"' > /some/path/on/your/host/all-databases.sql
9.恢复数据
docker exec -i mysql sh -c 'exec mysql -uroot -p"123456-abc"' < /some/path/on/your/host/all-databases.sql