使用docker隔离mysql并挂载在本地实现数据持久化

在VMware上的Linux系统,安装MySQL服务后,可以通过Navicat在Windows上远程访问。文章详细介绍了如何在Docker中创建和管理MySQL容器,包括下载镜像,创建容器,挂载数据卷到本地以防止数据丢失,以及设置容器的启动和重启策略。通过挂载数据卷,即使删除容器,数据也能保持不变,实现了数据的持久化。
摘要由CSDN通过智能技术生成

1. 绪论

我们在VMware上的Linux系统上安装启动mysql服务后,可以在本机Windows系统上通过Navicat远程访问,可以进行数据库表的增删改查,但是会存在一个问题: 此时如果通过docker关闭MySQL容器,就会导致数据丢失,因此修改容器之后需要保存或者挂载mysql数据库,挂载到本地之后避免了数据丢失,同时也是对数据的备份。

2. 步骤

  1. 先在我的F盘新建 几个文件夹准备几个文件夹,留作后面挂载使用

    F:\docker\mysql\conf 即 /f/docker/mysql/conf
    F:\docker\mysql\data 即 /f/docker/mysql/data
    F:\docker\mysql\log 即 /f/docker/mysql/log
    F:\docker\mysql\mysql-files 即 /f/docker/mysql/mysql-files
    

在这里插入图片描述

  1. 下载镜像 image

    # 最新版本
    docker pull mysql
    # 指定版本
    docker pull mysql:8.0
    

    查看当前镜像

    docker image ls    或者
    docker images
    

在这里插入图片描述

  1. 运行镜像创建 容器container,先不挂载

    docker run --name mysql -p 3309:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
    
    # --name 为创建的容器命名。(默认会随机给名字,不支持中文字符)
    # -p 表示端口映射,即<宿主机端口:容器中端口> 。 比如:-p 8080:80 就是将容器中的80端口,映射到主机中的8080端口
    # -e 环境配置  # 安装启动mysql需要配置密码
    # -d 会创建一个守护式容器在后台运行
    

    查看当前运行的容器

在这里插入图片描述

  1. 复制配置到主机

    docker cp mysql_test:/etc/mysql/. E:\docker\mysql\conf
    # mysql_test是容器名,/etc/mysql/.表示/mysql/目录下的所有文件
    

在这里插入图片描述

  1. 停止并删除旧容器

    docker stop mysql_test
    docker rm mysql_test
    
    # 停止容器
    docker container stop 容器名或容器id
    # 或可简写为
    docker stop 容器名或容器id
    
    # 强制关闭容器
    docker container kill 容器名或容器id
    # 或可简写为
    docker kill 容器名或容器id
    
    # 启动容器
    docker container start 容器名或容器id
    # 或可简写为
    docker start 容器名或容器id
    
    # 使用rm删除容器
    docker rm 容器名或容器id
    # 例如
    docker rm docker-test
    
  2. 重新运行镜像生成容器

docker run -p 3309:3306 --name mysql_test -v /e/docker/mysql/mysql-files:/var/lib/mysql-files -v /e/docker/mysql/log:/var/log/mysql -v /e/docker/mysql/data:/var/lib/mysql -v /e/docker/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai --restart=always -d mysql
# 这是一行代码,没有中间换行
-e TZ=Asia/Shanghai 启动时通过环境变量TZ设置容器内国内时区Asia/Shanghai
代码分段(供阅读用)
docker run --name mysql_test \
-p 3309:3306 \
-v /e/docker/mysql/mysql-files:/var/lib/mysql-files \
-v /e/docker/mysql/conf:/etc/mysql \
-v /e/docker/mysql/data:/var/lib/mysql \  
-v /e/docker/mysql/log:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-e TZ=Asia/Shanghai
--restart=always \
-d mysql

在这里插入图片描述

  1. 配置完成,Navicat测试

在这里插入图片描述

在这里插入图片描述

连接成功,数据挂载成功!!!

3. 结语

可以发现,容器删除,但是挂载到本地的数据卷依旧没有丢失,这就实现了容器持久化功能。

4. 参考和引用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值