Docker怎么挂载mysql(docker,mysql,开发技术)

时间:2024-05-04 16:39:26 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    Docker挂载mysql

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

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

    1.下载镜像

    #最新版本dockerpullmysql#如5.7版本本文基于5.7版本dockerpullmysql:5.7

    2.启动mysql容器

    #运行mysql命名容器名称为mysql并且设置root账号初始密码为rootdockerrun-p3306:3306--namemysql-eMYSQL_ROOT_PASSWORD="root"-dmysql:5.7

    3.确定mysql配置文件路径

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

    Docker怎么挂载mysql

    Docker怎么挂载mysql

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

    拷贝MySQL容器配置文件

    mkdir-p/usr/local/mysql/conf&&mkdir-p/usr/local/mysql/data#将容器的配置复制到服务器dockercpmysql:/etc/mysql/*/usr/local/mysql/conf/或dockercpmysql:/etc/mysql/./usr/local/mysql/conf/#修改字符集vim/usr/local/mysql/conf/my.cnfcharacter-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文件系统,更新文件系统即可

    systemctlstopdocker//停掉docker服务rm-rf/var/lib/docker//注意会清掉dockerimages的镜像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容器

    dockerstopmysqldockerrmmysqldockerrun--namemysql\-p3306: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\-eMYSQL_ROOT_PASSWORD=admin123456\--restart=always\-dmysql:5.7dockerrun--namemysql-p3306: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-eMYSQL_ROOT_PASSWORD=admin123456--restart=always-dmysql

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

    初识Docker挂载mysql挂载备份

    首先下载一个mysql:docker pull mysql

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

    dockerrun-d-p3310:3306-v/home/mysql/conf:/etc/mysql/conf.d-v/home/mysql/data:/var/lib/mysql-eMYSQL_ROOT_PASSWORD=自己设置的密码--namemysql01mysql
    • -d 后台启动

    • -p 端口映射,将3306映射到外部端口

    • -v 卷挂载,将mysql内部文件同步到linux的文件中,做到备份

    • -e 环境配置,这里配置的是mysql密码

    • --name 容器名称

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

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

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

    dockerrun-d-P--namemysql01-v/etc/mysqlmysql

    (-P 随机映射端口)

    #具名挂载:

    dockerrun-d-P--namemysql02-vjuming-mysql:/etc/mysqlmysql

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

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

    #查看一下这个卷:

    dockervolumeinspectjuming-mysql

    Docker怎么挂载mysql

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

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

    拓展

    #通过-v容器内路径:ro rw 改变读写权限ro readonly #只读rw readwrite #可读可写#一旦设置了容器权限,容器对我们挂载出来的内容就有限定dockerrun-d-P--namemysql02-vjuming-mysql:/etc/mysql:romysqldockerrun-d-P--namemysql02-vjuming-mysql:/etc/mysql:rwmysql#ro,只要看到ro就说明这个路径只能通过宿主机操作,容器内部是无法操作的!

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

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

    Docker怎么挂载mysql

    再使用:docker system --help

    Docker怎么挂载mysql

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

    Docker怎么挂载mysql

     </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
    本文:Docker怎么挂载mysql的详细内容,希望对您有所帮助,信息来源于网络。
    上一篇:&quot;&amp;&quot;操作符在声明函数时,修饰参数时的使用下一篇:

    7 人围观 / 0 条评论 ↓快速评论↓

    (必须)

    (必须,保密)

    阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18