在Centos Stream 9上Docker的实操教程(三) - Docker容器数据卷

news2024/9/29 3:24:50

在Centos Stream 9上Docker的实操教程 - Docker容器数据卷

  • 问题场景
  • Docker容器数据卷简单介绍
  • 数据卷使用
  • 操作实例
      • 安装redis
      • 验证配置文件生效
      • 验证数据是否丢失
  • 结语

问题场景

Docker容器我们可以理解就是微型的linux系统,在使用容器的时候自然会产生一系列数据文件,当容器被我们删除的时候,数据也会一并删除,那么就会产生以下种种问题:

  • 如何保证mysql容器的数据不会随着容器删除而丢失?
  • 如果同时运行两个nginx容器,它们希望共享一个配置文件怎么处理?
  • 能不能直接在宿主机修改redis配置文件并立即生效?
  • 等等…

想要解决上述的相关问题,那么就引出了我们的Docker容器数据卷

Docker容器数据卷简单介绍

数据卷(Data Volumes) 是一个可供一个或多个容器使用的特殊目录,它将主机操作系统目录直接映射进容器。可以简单的理解为docker容器数据卷就是我们使用的移动硬件,它存在于一个或多个的容器中,由 docker挂载到容器,但不属于联合文件系统(Union FileSystem),Docker不会在容器删除时删除其挂载的数据卷。

它可以提供很多有用的特性:

  • 数据卷可以在容器之间共享和重用
  • 对数据卷的修改会立马生效
  • 对数据卷的更新,不会影响镜像
  • 卷会一直存在,直到没有容器使用

数据卷使用

我们之前在介绍常用命令dcoker run的时候应该看到了 -v 的一个参数,没错它就是用来指定数据卷的

docker run -d -v 主机目录:容器目录 镜像名称

操作实例

安装redis

我们本章将以redis为例,演示配置文件配置和防止redis缓存数据的丢失;
首先博主宿主机定义的数据卷目录如下(大家可以自行定义):

  • redis配置文件目录 /data/redis/redis.conf
  • redis数据data文件目录 /data/redis/data

顺便复习一下上一章节dicker常用命令

#拉取镜像
docker pull redis
#查看镜像
docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
redis        latest    0ec8ab59a35f   6 days ago   117MB

因为我们用的latest版本,我们到github官网下载一份最新的redis配置文件,地址https://github.com/redis/redis/blob/unstable/redis.conf
保存至我们redis配置文件目录,即 /data/redis/redis.conf 大家按需修改配置文件即可

注意配置文件中一定要设置 否则会导致-d 冲突从而无法启动的问题

#关闭仅允许本机访问
# bind 127.0.0.1 ::1

#关闭后台启动
daemonize no

开始执行挂载数据卷,一个是配置文件,一个是redis数据文件

docker run -p 6379:6379 --name myredis -v /data/redis/redis.conf:/etc/redis/redis.conf -v /data/redis/data:/data -d redis redis-server /etc/redis/redis.conf

#查看容器
docker ps 
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                       NAMES
32546e99aa31   redis     "docker-entrypoint.s…"   4 seconds ago   Up 3 seconds   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp   myredis

验证配置文件生效

首先进入容器 myredis 是我们创建容器时定义的命名 --name myredis

docker exec -it myredis /bin/bash

我们知道配置文件中默认的 databases=16 ,则最大我们选择数据库最大只能15,如图
在这里插入图片描述
我们修改宿主机中的redis配置文件将数据库最大支持10个;

#修改配置文件
vim /data/redis/redis.conf
#修改databases最大支持数
databases 10

修改完成保存退出,我们重启我们的容器

#重启redis容器
docker restart myredis
#重新进入容器
docker exec -it myredis /bin/bash
#进入redis
redis-cli
#测试选择库
select 15

不出意外会得到下面的图
在这里插入图片描述
从而得出一个结论证明容器里redis读取的配置就是我宿主机中的配置;

验证数据是否丢失

为了验证数据丢失问题我们将redis容器删除,再次之前我们redis先设置几个key,我们现在有两个key
在这里插入图片描述

开始删除容器

#停止容器
docker stop myredis
#删除容器
docker rm -f myredis

重新安装新的redis容器,同样挂载相同的配置目录和data目录;

docker run -p 6379:6379 --name myredis -v /data/redis/redis.conf:/etc/redis/redis.conf -v /data/redis/data:/data -d redis redis-server /etc/redis/redis.conf

#重新进入容器
docker exec -it myredis /bin/bash
#进入redis
redis-cli
#查看key 注意之前测试插入key选择是哪个库,进行select
keys *

最终如下图:
在这里插入图片描述
OK我们也证明了容器里redis保存的数据已经和宿主机进行了挂载关联,容器删除只要宿主机数据还在,重新恢复容器数据依旧存在;

结语

通过本章redis的操作实例,大家应该能明白容器数据卷使用的目的,如果你还不是很清楚,没关系可以点赞关注,后续章节将会有更多实操案例让大家巩固了解!

下一章:在Centos Stream 9上Docker的实操教程 - Docker公有仓库和私有仓库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/586643.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于SpringBoot+Vue的儿童书法机构管理系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 儿童书法机构的管理是…

代码随想录算法训练营第四十二天 | 二维dp数组01背包, 力扣 416. 分割等和子集

背包 解析 1.确定dp数组以及下标的含义 对于背包问题,有一种写法, 是使用二维数组,即dp[i][j] 表示从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少。 2.确定递推公式 有两个方向推出来dp[i][…

跨境电商app开发搭建多语言商城后的运营技巧,一件了解电子商城及运营

跨境电商APP包含:买家端手机H5版本, 电脑Pc网页版本, 安卓苹果App。 一、模式介绍 如需要探讨,请kan 名片。 无货源模式:电商平台上的卖家不需要自己拥有实体的库存,而是通过与供应链服务提供商合作,将订单和支付…

ai写作软件怎么写文章?这篇文章介绍三个好方法

在人工智能技术的迅速发展下,ai写作成为创作领域的一项炙手可热的新技术。随着越来越多的创作者开始借助ai写作工具,ai写作逐渐引起了广泛的关注。ai写作是指利用人工智能技术和自然语言处理算法,为创作者提供文章的初版。不过有很多小伙伴对…

Linux用户权限管理

目录 一 权限定义 二 权限表示法 2.1 数字表示法 2.2 文字表示法 三 更改权限 四 权限ACL配置 五 特殊权限 5.1特殊权限SUID 5.2 特殊权限SGID 5.3 特殊权限Sticky 5.4 linux改变拥有者 一 权限定义 通过ll命令查看,然后摘出来一条分析: d …

PHPMySQL基础(二):通过PHP对MySQL进行增、删、改、查

PHP&MySQL基础(一):创建数据库并通过PHP进行连接_长风沛雨的博客-CSDN博客 前面创建了一个数据库和表,并且用 mysqli()实例化了一个连接对象$link 这篇记一下怎么用实例化对象去对表进行一个增删改查操作 目录 一、连接数据库&#xf…

AcWing第 105 场周赛

AcWing 5029. 极值数量 给定一个长度为 n� 的整数数组 a1,a2,…,an�1,�2,…,��。 如果一个元素左右两边均有相邻元素(也就是不位于数组的两端),且满足以下两个条件之一&#xff1a…

RK3588平台开发系列讲解(基础篇)Linux 内核有多少 API 接口

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、Linux 内核有多少 API 接口二、Linux 系统调用表三、Linux 系统调用实现3.1、申明系统调用3.2、定义系统调用沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 Linux 作为比较成熟的操作系统,功能完善,它…

apache的配置和应用

文章目录 一、httpd服务支持的虚拟主机类型包括以下三种:二、构建Web虚拟目录与用户授权限制三、日志分割四、 虚拟Web主机指的是在同一台服务器中运行多个Web站点,其中每一个站点实际上并不独立占用整个服务器,因此被称为“虚拟”Web 主机。通过虚拟 We…

Flume实现Kafka数据持久化存储到HDFS

写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成…

eclipse连接mysql全网最详细教程

第一步:我们先做连接前的环境准备工作 1、首先在MySQL官网下载驱动:(下载地址博主给大家整理好了直用) https://dev.mysql.com/downloads/file/?id498587 下下来是这个样子 2、在eclipse中新建一个工程 3、添加驱动到eclipse里…

小主机折腾记12 HP 285G3 PRO MT

五一期间,无事,咸鱼购入HP 285G3 PRO MT折腾 HP 285 PRO G3 MT准系统 150包邮 R5 2600 250包邮 金百达3200内存 229京东包邮 直接说准系统情况: 1.主机有三个sata接口,两个硬盘接口,一个光驱接口(应该是可以…

BM1684X开发环境搭建--SOC mode

环境配置-SOC模式---------------------------------------- 1:对于SoC模式,模型转换也需要在docker开发容器中完成;C/C程序建议在x86主机上使用交叉编译工具链编译生成可执行文件后,再拷贝到SoC目标平台运行; 2&…

macOS运行软件提示:“嘉立创EDA.app” 已损坏,无法打开。你应该将它移到废纸篓。

一、问题描述 macOS运行软件提示:“嘉立创EDA.app” 已损坏,无法打开。你应该将它移到废纸篓。 二、问题分析 macOS安全性问题导致的。 三、解决方案 1、在系统设置、隐私与安全性、安全性、允许从以下位置下载的应用程序中,选择“任何来…

OpenLDAP 搭建及简单使用

文章目录 1、前言LDAPOpenLDAP 2、安装(通过 Docker 部署)环境说明镜像说明部署客户端&验证连接示例 总结 1、前言 LDAP 轻型目录访问协议(英文:Lightweight Directory Access Protocol,缩写:LDAP&am…

java.awt.datatransfer.Clipboard剪切板复制粘贴String

java.awt.datatransfer.Clipboard剪切板复制粘贴String java.awt.Toolkit 是一个可用来获取操作剪切板的工具 Toolkit toolkit Toolkit.getDefaultToolkit(); 获得 tookit Clipboard systemClipboard toolkit.getSystemClipboard(); 获得操作系统级的剪切板 Toolkit toolk…

算法基础学习笔记——⑬高斯消元\组合计数\容斥原理

✨博主:命运之光 ✨专栏:算法基础学习 目录 ✨高斯消元 ✨组合计数 🍓通过预处理逆元的方式求组合数: 🍓Lucas定理: 🍓分解质因数法求组合数: 前言:算法学习笔记记录日常分享,需…

【小可爱专属教程】服务器配置环境

【小可爱专属教程】服务器配置环境 安装CUDA和CUDNN安装CUDA安装CUDNN 安装Anaconda3安装Pytorch 安装CUDA和CUDNN 安装CUDA 文件已经上传至百度网盘 链接:https://pan.baidu.com/s/1LKzZXtSr1kXOnlfbO0cmEw?pwdgfbb 提取码:gfbbsudo sh cuda_11.3.…

【技术解决方案】(多级)缓存架构最佳实践

凌晨三点半了,太困了,还差一些,明天补上… 因为自己最近做的项目涉及到了缓存,所以水一篇缓存相关的文章,供大家作为参考,若发现文章有纰漏,希望大家多指正。 缓存涉及到的范围颇广&#xff0c…

spring boot整合Swagger2(2.9.2版本)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…