Docker安装MySQL 8.0.17 并挂载数据及配置文件,修改时区
一般来说是不需要手动指定MySQL挂载卷,因为mysql会自动挂载,
通过 dokcer inspect 你的容器名称 可以查看容器已挂载的路径 /var/lib/docker/volumes/855a71109c9ac92a8a9243cc5058aaa41******
如果删除了容器,可以在重新run一个mysql的时候把“/var/lib/docker/volumes/855a71109c9ac92a8a9243cc5058aaa41******”这个挂上去,这样以前的数据也可以使用,
如果在run的时候手动指定挂载卷,则mysql的数据会以指定的目录挂载
1:下载镜像
docker pull mysql:8.0.17
2:启动
# 运行mysql命名容器名称为mysql并且设置root账号初始密码为root docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD="root" -d mysql:8.0.17
3:确定mysql配置文件路径
#进入docker容器,mysql为刚安装的容器名称 docker exec -it mysql bash # 查找Docker内,MySQL配置文件my.cnf的位置 mysql --help | grep my.cnf
4:创建本地路径并挂载Docker内数据
mkdir -p /home/data/mysql/conf && mkdir -p /home/data/mysql/data
# 将容器的配置复制到服务器
docker cp mysql:/etc/mysql/my.cnf /home/data/mysql/conf/my.cnf
# 修改字符集
vim /home/data/mysql/conf/my.cnf
character-set-server=utf8
5:重新创建容器
docker run --name mysql \
-p 3306:3306 \
-v /home/data/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /home/data/mysql/data:/var/lib/mysql \
-v /home/data/mysql/log:/logs \
-e MYSQL_ROOT_PASSWORD=123456 \
--restart=always \
-d mysql:8.0.17
docker inspect mysql
查看已挂载的卷就是指定的目录了
6:到此mysql已经创建完毕,可以远程连接数据,创建测试数据库"test"
7:查看挂载的本地data目录下是否有新建的数据库“test”,有说明挂载成功
8:移除刚创建的容器,看看本地data数据盘,"test"数据是否依然存在
9:重新部署mysql数据库docker容器,远程连接数据库,发现数据库依然存在"test"数据库,说明数据持久化成功
10:修改时区
vim /home/data/mysql/conf/my.cnf
添加 default-time-zone = '+08:00'
重启docker中的mysql容器即可,不是docker中的mysql重启mysql服务即可
docker restart your_mysql_name
再次进入mysql中查看当前时间和时区
修改时区参考 https://blog.csdn.net/qq_28018283/article/details/80109290