蓝易云

Docker 奇淫技巧之 commit 能够保证数据不丢失的 mysql 镜像

419次阅读
没有评论

共计 808 个字符,预计需要花费 3 分钟才能阅读完成。

不知道大家有没有过想保存已经运行的 mysql 容器为镜像的经验,如果有的话你会发现 commit 以后再运行的 mysql 能启动,但是数据没有保存过来。如果你不知道什么的话,看看阿蛮君的这篇文章 Docker commit 镜像后数据丢失

既然已经知道了问题所在,那么想办法解决问题,只需要更改 mysql 的数据目录即可。

1. 正常方式启动 mysql

docker run -d \
--name mysql8 \
-p 3306:3306 \
-v /home/docker/mysql8/conf.d:/etc/mysql/conf.d  \
-v /home/docker/mysql8/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
--restart always mysql:8.0.26

2. 修改配置文件

进入容器新建目录并复制数据,并修改配置文件。

# 进入容器
docker exec -it mysql8 bash

# 创建目录
mkdir /var/lib/mysql2

# 复制数据
cp -r /var/lib/mysql/* /var/lib/mysql2

# 创建配置文件,修改指定的数据保存的目录
cat >> /etc/mysql/my.cnf <<EOF
[mysqld]
datadir = /var/lib/mysql2
EOF

3. 提交为镜像

接下来可以尝试在 mysql 添加一些数据,看看新的镜像是否会保存数据。

# 提交镜像
docker commit -m 'commit mysql8' mysql8 my-mysql

4. 运行新的镜像

docker run -d \
--name mysql8 \
-p 3306:3306 \
-v /home/docker/mysql8/conf.d:/etc/mysql/conf.d  \
--restart always my-mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
--restart always my-mysql

提醒:本文发布于609天前,文中所关联的信息可能已发生改变,请知悉!

AD:【腾讯云服务器大降价】2核4G 222元/3年 1核2G 38元/年
正文完
 0
阿蛮君
版权声明:本站原创文章,由 阿蛮君 于2023-03-23发表,共计808字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
Copyright © 2022-2024 阿蛮君博客 湘ICP备2023001393号
本网站由 亿信互联 提供云计算服务 | 蓝易云CDN 提供安全防护和加速服务
Powered by Wordpress  Theme by Puock