我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Docker如何挂载mysql

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Docker如何挂载mysql

Docker挂载mysql

我们在VMware上的linux系统上安装启动mysql服务后,可以在本机Windows系统上通过Navicat远程访问,可以进行数据库表的增删改查,但是会存在一个问题

此时如果通过docker关闭MySQL容器,就会导致数据丢失(可以理解为数据库中的提交事务,未提交事务会导致数据没保存成功 ),因此修改容器之后需要保存或者挂载mysql数据库

1.下载镜像

# 最新版本
docker pull mysql
 
# 如 5.7 版本 本文基于5.7版本
docker pull mysql:5.7

2.启动mysql容器

# 运行mysql命名容器名称为mysql并且设置root账号初始密码为root
docker run  -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD="root" -d mysql:5.7

3.确定mysql配置文件路径

#进入docker容器,mysql为刚安装的容器名称
docker exec -it mysql或者mysql容器ID /bin/bash
 
# 查找Docker内,MySQL配置文件my.cnf的位置
mysql --help | grep my.cnf
 
# 会输出数据文件的存放路径 /var/lib/mysql/
show variables like '%datadir%';

Docker如何挂载mysql

Docker如何挂载mysql

4.创建本地路径并挂载Docker内数据

拷贝MySQL容器配置文件

mkdir -p /usr/local/mysql/conf && mkdir -p /usr/local/mysql/data
 
# 将容器的配置复制到服务器
docker cp mysql:/etc/mysql/* /usr/local/mysql/conf/
或
docker cp mysql:/etc/mysql/. /usr/local/mysql/conf/
 
# 修改字符集
vim /usr/local/mysql/conf/my.cnf
character-set-server=utf8

如果遇到如下错误:

/usr/bin/docker-current:Error response from daemon: error creating overlay mount to /var/lib/docker/overlay2/1b1d4a0234ee4caxxxxx/merged: invalid argument.
 
See '/usr/bin/docker-current run --help'.

这个是因为用的overlay2文件系统,而系统默认只能识别overlay文件系统,更新文件系统即可

systemctl stop docker   //停掉docker服务

rm -rf /var/lib/docker    //注意会清掉docker images的镜像

vim /etc/sysconfig/docker-storage   

//将文件里的overlay2改成overlay即可

如:DOCKER_STORAGE_OPTIONS="--storage-driver overlay"

vim /etc/sysconfig/docker     //去掉option后面的--selinux-enabled

然后启动docker即可:systemctl start docker

5.重新启动mysql容器

docker stop mysql
 
docker rm mysql
 
docker run --name mysql \
-p 3306:3306 \
-v /usr/local/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /usr/local/mysql/data:/var/lib/mysql \  
-v /usr/local/mysql/log:/logs \
-e MYSQL_ROOT_PASSWORD=admin123456 \
--restart=always \
-d mysql:5.7
 
docker run --name mysql -p 3306:3306 -v /usr/local/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/log:/logs -e MYSQL_ROOT_PASSWORD=admin123456 --restart=always -d mysql

映射MySQL数据文件后,删除或者停止mysql容器后能保留数据库文件,不至于导致数据库丢失

初识Docker挂载mysql挂载备份

首先下载一个mysql:docker pull mysql

运行mysql容器,需要做数据挂载(挂载就是将mysql中的文件,挂载到linux中,下次修改mysql配置文件,就不需要进入mysql,也可以备份mysql的数据):##安装启动mysql,需要配置密码:

docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=自己设置的密码 --name mysql01 mysql
  • -d 后台启动
  • -p 端口映射,将3306映射到外部端口
  • -v 卷挂载,将mysql内部文件同步到linux的文件中,做到备份
  • -e 环境配置,这里配置的是mysql密码
  • --name 容器名称

挂载方式有具名挂载和匿名挂载

#查看所有volume(卷挂载)的情况 :docker volume ls

#匿名挂载:-v 容器内路径

docker run -d -P --name mysql01 -v /etc/mysql mysql

(-P 随机映射端口)

#具名挂载:

docker run -d -P --name mysql02 -v juming-mysql:/etc/mysql mysql

(具名挂载名称:juming-mysql)

#通过 -v 卷名:容器内路径

#查看一下这个卷:

docker volume inspect juming-mysql

在这里插入图片描述

#所有的docker容器卷,在没有指定目录的情况下,都存储在 /var/lib/docker/volumes/xxx/_data

**如何确定是具名挂载还是匿名挂载,还是指定路径挂载!**
				
	-v 容器内路径		#匿名挂载
	-v 卷名:容器内路径		#具名挂载
	-v /宿主机路径:容器内路径		#指定路径挂载

拓展

#通过 -v 容器内路径:ro	rw	改变读写权限
ro	readonly	#只读
rw	readwrite	#可读可写

#一旦设置了容器权限,容器对我们挂载出来的内容就有限定
docker run -d -P --name mysql02 -v juming-mysql:/etc/mysql:ro mysql
docker run -d -P --name mysql02 -v juming-mysql:/etc/mysql:rw mysql

#ro,只要看到ro就说明这个路径只能通过宿主机操作,容器内部是无法操作的!

在测试的时候发现,如果一个文件名,如juming-mysql挂载过一次,删除容器后,再使用这个名字时,会无法挂载上,原因是docker 里面的volumes缓存没有清除:

可以使用 docker --help 可以看到命令

在这里插入图片描述

再使用:docker system --help

在这里插入图片描述

这个就是docker清理volumes缓存的选项,输入docker system prune 确定时输入y,即可删除 挂载缓存

在这里插入图片描述

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Docker如何挂载mysql

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Docker如何挂载mysql

目录docker挂载mysql1.下载镜像2.启动mysql容器3.确定mysql配置文件路径4.创建本地路径并挂载Docker内数据5.重新启动mysql容器初识Docker挂载mysql挂载备份挂载方式有具名挂载和匿名挂载拓展总结Doc
2023-03-07

Docker怎么挂载mysql

这篇文章主要介绍“Docker怎么挂载mysql”,在日常操作中,相信很多人在Docker怎么挂载mysql问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Docker怎么挂载mysql”的疑惑有所帮助!接下来
2023-07-05

Docker如何使用匿名挂载和具名挂载

小编给大家分享一下Docker如何使用匿名挂载和具名挂载,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!数据卷volume提到这个匿名挂在和具名挂载,其实要先普及一
2023-06-22

docker如何挂载、修改文件

这篇文章主要讲解了“docker如何挂载、修改文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“docker如何挂载、修改文件”吧!docker 挂载、修改文件前段时间咱们使用Docker安
2023-07-05

docker已经初始化后如何挂载

使用 -v 或 --volume 参数来挂载数据卷。例如,如果要将当前主机的 /host/path 目录挂载到容器内的 /container/path 目录,可以使用以下命令:docker run -v /host/path:/conta
docker已经初始化后如何挂载
2024-03-13

docker compose启动docker文件挂载失败如何解决

这篇“docker compose启动docker文件挂载失败如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“dock
2023-07-05

在 Docker 中部署 Mysql 并挂载配置文件

在 Docker 中部署 MySQL 并挂载配置文件,可以使用以下步骤: 创建本地目录 首先,在主机上创建一个目录,用于存放 MySQL 的配置文件。例如,创建一个名为 mysql 的目录,用于存放 MySQL 的配置文件。 mkdir m
2023-08-22

如何在Docker容器中挂载NFS共享目录

这篇文章给大家介绍如何在Docker容器中挂载NFS共享目录,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Dockerfile内容如下:FROM ubuntu:16.04LABEL maintainer="FengBi
2023-06-06

docker怎么挂载配置文件

在使用Docker时,可以通过挂载配置文件来将宿主机上的配置文件映射到容器内部。以下是挂载配置文件的方法:使用 `-v` 参数挂载单个配置文件:docker run -v /path/to/host/config/file:/path/t
2023-10-26

如何使用Docker将容器目录挂载到主机上

今天小编给大家分享一下如何使用Docker将容器目录挂载到主机上的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、基本介绍这
2023-06-30

编程热搜

目录