Docker容器映射Redis和MySQL到本地

news/2025/2/13 5:06:55/

Docker容器因其快速、轻量级、可移植性、隔离性和安全性、可弹性扩展等诸多特性,在程序交付和部署的时候使用非常广泛。但是容器中数据无法持久化,当容器关闭或者删除的时候其中的数据就会丢失。所以很多时候我们会将Docker中的数据目录挂载到本地, 实现程序数据的持久化存储。

这里就介绍一下如何把Docker镜像中的MySQL和Redis数据挂载到本地目录。MySQL和Redis在Docker镜像中的相关目录信息如下:

MySQL:  
日志目录:/var/log/mysql/   
配置文件目录:/etc/mysql/   
数据目录:/var/lib/mysql/   Redis:
日志目录:/var/log/redis/  
配置文件目录:/etc/redis/  
数据目录:/var/lib/redis/  

我们需要做的就是把docker容器中的对应的目录映射到本地,实现数据的本地化。
这里将mysql的数据映射到本地/local/mysql目录下, 将redis的数据映射到本地/local/redis目录下。

下面介绍一下详细步骤:

  1. 拷贝文件
    首先我们要将docker镜像中对应目录的数据信息拷贝到本地,确保镜像内外的内容保持一致。
# 拷贝MySQL相关目录到本地
docker cp [容器ID:/var/log/mysql/]   ./local/mysql/log/
docker cp [容器ID:/etc/mysql/]   ./local/mysql/conf/
docker cp [容器ID:/var/lib/mysql/]   ./local/mysql/data/# 拷贝Redis相关目录到本地
docker cp [容器ID:/var/log/redis/]   ./local/redis/log/
docker cp [容器ID:/etc/redis/]   ./local/redis/conf/
docker cp [容器ID:/var/lib/redis/]   ./local/redis/data/
  1. 修改文件夹权限和所有者
    由于docker镜像中MySQL和Redis对应目录创建者和权限与本地的用户和权限不一样, 这样就会导致docker容器挂载数据目录的时候异常。所以我们需要修改一下目录的权限和所有者:
# docker中的用户默认是root
sudo chown -R root:root ./local/redis/
sudo chown -R root:root ./local/mysql/# 权限改为777 均可读写
sudo chmod -R 777 ./local/redis/
sudo chmod -R 777 ./local/mysql/
  1. 在创建容器的时候映射对应的目录
# 1.通过docker run的命令创建容器(-p 映射端口 -v挂载目录)
docker run -d -p 8080:80 -p 8554:554  \
-v $(dirname `readlink -f $0`)/local/mysql/conf/:/etc/mysql -v $(dirname `readlink -f $0`)/local/redis/conf/:/etc/redis \
-v $(dirname `readlink -f $0`)/local/mysql/data/:/var/lib/mysql -v $(dirname `readlink -f $0`)/local/redis/data/:/var/lib/redis \
-v $(dirname `readlink -f $0`)/local/mysql/log/:/var/log/mysql -v $(dirname `readlink -f $0`)/local/redis/log/:/var/log/redis \
--name my_docker  official:master \# 2.通过docker create命令创建容器
sudo docker create -it --privileged=true -p 8080:80 -p 8554:554 \
-v $(dirname `readlink -f $0`)/local/mysql/conf/:/etc/mysql -v $(dirname `readlink -f $0`)/local/redis/conf/:/etc/redis \
-v $(dirname `readlink -f $0`)/local/mysql/data/:/var/lib/mysql -v $(dirname `readlink -f $0`)/local/redis/data/:/var/lib/redis \
-v $(dirname `readlink -f $0`)/local/mysql/log/:/var/log/mysql -v $(dirname `readlink -f $0`)/local/redis/log/:/var/log/redis \
--name my_docker  official:master # 启动对应的容器
docker start container_id

通过上面的命令就可以将MySQL和Redis的数据目录挂载到Docker容器外部了。这样当容器重启或者删除的时候, 数据信息也不会丢失了, 确保了数据的持久化。


http://www.ppmy.cn/news/1001977.html

相关文章

百度网盘加速下载

下载网页插件可搜索各种奇葩工具 Tampermonkey 在线解析连接:https://api.94speed.com/web/ 工具下载:https://motrix.app/zh-CN/download 解析完成后发送到:motrix

机器学习:异常检测

问题定义 anomaly,outlier, novelty, exceptions 不同的方法使用不同的名词定义这类问题。 应用 二分类 假如只有正常的数据,而异常的数据的范围非常广的话(无法穷举),二分类这些不好做。另外就…

改造升级autoPOI以满足poi5.0.0及以上版本

因为nbcio-boot项目用到了poi5.0.0,但本身我看autoPOI现在只能支持poi4.12,所以需要改造这个jar,以便使用,随便也上传一下到maven中央库里去。 主要如下: 1、POM父文件修改成自己的版本,同时根据上传maven…

基于Jonswap谱的随机波高及波压力生成

内容目录 基于Jonswap谱的随机波高及波压力生成基于Jonswap谱的随机波高及波压力生成 海面高程可视为是平稳高斯随机过程,可通过对波浪谱确定的一系列分量波进行叠加得到。JONSWAP谱是在海洋结构设计和分析中常用的波浪频谱,可以用其来模拟随机波浪。 式中:有义波高H1/3和…

SQL SERVER使用发布订阅同步数据库遇到的坑

可能遇到的各种坑 1.在执行 xp_cmdshell 的过程中出错。调用 ‘CreateProcess’ 失败,错误代码: ‘5’ 网上有各种解决办法,包括改本地安全策略,将sql server服务的网络权限改为本机系统,改cmd用户的读写权限,退出360…

右键文件夹 ------- 打开 vscode的方法

1、右键vscode点击属性 2、这是地址栏,一会复制即可 3、新建一个txt文件,将这个复制进去 Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\*\shell\VSCode] "Open with Code" "Icon""D:\\Microsoft VS Code\\Code.exe"[HKE…

stable diffusion(1): webui的本地部署(windows)

一、前言 是的,现在是202308月份了,网上已经有很多打包好的工具,或者直接进一个web就能用SD的功能,但是我们作为程序员,就应该去躺坑,这样做也是为了能够有更多自主操作的空间。 像其他AI一样&#xff0c…

简单复现原型链污染

原型链污染是一种安全漏洞,通过修改JavaScript对象的原型链,可以修改对象的行为或者访问未授权的属性和方法,利用它来执行恶意代码或者获取未授权的访问权限: // 创建一个被污染的对象 var aa {}// 创建一个用于污染原型链的恶意…