“Docker之道:优雅管理容器数据的艺术“

news2024/11/25 14:21:07

目录

1. 容器数据卷

1.1 容器卷的概念

1.2 容器卷的使用

1.3 个人案例实现容器卷挂载

1.4 MySQL同步数据案例(容器数据卷操作)

1.4.1 获取 MySQL 镜像

1.4.2 运行 MySQL 容器并配置数据持久化

参数说明:

1.4.3 测试 MySQL 连接

1.4.4 数据持久化验证

1.4.5 持续管理与使用

1.5 具名挂载和匿名挂载

2. 数据卷容器

参数说明


1. 容器数据卷

  • 场景:容器之间的共享和持久存在,这里存在挂载操作,本人觉得非常实用;
  • 挂载:挂载到本地的容器卷上。

1.1 容器卷的概念

容器之间可以数据共享,不单单只存在于容器当中,删除了容器就好比"删库跑路"了一样,数据无法持久化;

  • 实现挂载原理:

    但是容器之间可以有一个数据共享的技术,docker容器中产生的数据,同步到本地;

    这个就是卷技术,比如说目录挂载:将容器内的目录,挂载到本地上,实现容器间的数据共享;

1.2 容器卷的使用

挂载作用:我在容器中创建的文件,它会被同步到容器外面,同时我在容器外创建的文件或者是修改的文件也会被同步到容器内;

docker挂载常用命令表格:

序号命令类型命令格式
1挂载本地目录docker run -it -v 主机目录:容器内目录
2挂载本地目录(只读)docker run -it -v 主机目录:容器内目录:ro
3使用--mount选项挂载docker run -it --mount type=bind,source=主机目录,target=容器内目录
4使用--mount选项(只读)docker run -it --mount type=bind,source=主机目录,target=容器内目录,readonly
5挂载Docker数据卷docker run -it -v 数据卷名:容器内目录
6使用--mount挂载数据卷docker run -it --mount source=数据卷名,target=容器内目录
7查看容器信息docker inspect 容器ID
序号说明示例
1将主机目录挂载到容器内目录docker run -it -v /home/ceshi:/home centos /bin/bash
2以只读方式挂载主机目录到容器内目录docker run -it -v /home/ceshi:/home:ro centos /bin/bash
3使用--mount选项挂载主机目录到容器内目录docker run -it --mount type=bind,source=/home/ceshi,target=/home centos /bin/bash
4使用--mount选项以只读方式挂载主机目录docker run -it --mount type=bind,source=/home/ceshi,target=/home,readonly centos /bin/bash
5将数据卷挂载到容器内目录docker run -it -v mydata:/home centos /bin/bash
6使用--mount选项将数据卷挂载到容器内目录docker run -it --mount source=mydata,target=/home centos /bin/bash
7查看容器详细信息,包括挂载点信息docker inspect <container_id>
  • 容器卷的好处:以后要修改容器中的数据,只需要在本地修改即可。
  • 容器被删除后,但是被挂载的数据是不会被删除的。

1.3 个人案例实现容器卷挂载

1.4 MySQL同步数据案例(容器数据卷操作)

1.4.1 获取 MySQL 镜像

从 Docker Hub 拉取 MySQL 5.7 的镜像:

[root@kuangshen home]# docker pull mysql:5.7
1.4.2 运行 MySQL 容器并配置数据持久化

启动 MySQL 容器时,需要挂载数据卷来确保数据的持久化。以下命令包括了主要的参数和配置:

[root@kuangshen home]# 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=123456 \
    --name mysq101 \
    mysql:5.7
参数说明:
  • -d:后台运行容器。
  • -p 3310:3306:将宿主机的 3310 端口映射到容器的 3306 端口。
  • -v /home/mysql/conf:/etc/mysql/conf.d:挂载宿主机的配置目录到容器的 MySQL 配置目录。
  • -v /home/mysql/data:/var/lib/mysql:挂载宿主机的数据目录到容器的 MySQL 数据目录。
  • -e MYSQL_ROOT_PASSWORD=123456:设置 MySQL root 用户的密码为 123456
  • --name mysq101:容器命名为 mysq101
  • mysql:5.7:使用 MySQL 5.7 版本镜像。
1.4.3 测试 MySQL 连接

在本地使用 SQLyog 或其他 MySQL 客户端工具连接到 Docker 容器中的 MySQL 服务:

  1. 打开 SQLyog
  2. 在连接设置中,设置主机为 localhost,端口为 3310,用户名为 root,密码为 123456
  3. 测试连接,如果成功,表示 MySQL 已经正确运行。
1.4.4 数据持久化验证

在本地 MySQL 客户端中执行数据库操作(如创建数据库),并检查挂载的目录是否更新:

CREATE DATABASE testdb;

然后检查 /home/mysql/data 目录中的内容是否包含 testdb 的相关数据文件,确保数据在容器重启后仍然存在。

1.4.5 持续管理与使用
  • 启动容器
docker start mysq101
  • 停止容器
docker stop mysq101
  • 查看容器日志
docker logs mysq101
  • 进入容器
docker exec -it mysq101 bash

作用:是MySQL的数据可以持久化,在容器被删除后,MySQL的数据还依旧存在。

这样MySQL就可以持久化了,就算删除了容器中的MySQL,那么本地目录下的MySQL数据还依旧存在。

1.5 具名挂载和匿名挂载

参考教学视频中的笔记:

Docker视频:尚硅谷2022版Docker实战教程(docker教程天花板)_哔哩哔哩_bilibili

Docker视频:【狂神说Java】Docker最新超详细版教程通俗易懂_哔哩哔哩_bilibili

Docker进阶:compose是什么能干嘛_哔哩哔哩_bilibili

2. 数据卷容器

  • 场景:使得容器之间的数据共享更加方便和可控。
  • 总结一下 [ 容器数据卷 , 数据卷容器 ] 两者的区别: - 数据卷是一个特殊的目录,直接在主机的文件系统上进行管理,可以在容器之间共享和持久存在。 - 数据卷容器是用于创建和管理数据卷的容器,本身不运行应用程序,而是提供一个中心化的位置来管理和维护数据卷,使得容器之间的数据共享更加方便和可控。
  • volumes挂载:以下命令是将MySQL02挂载到了MySQL01之下,进行数据同步,当MySQL01被删除时,MySQL02依旧存在,这是一个copy拷贝的概念,每次同步的时候是将MySQL01的配置拷贝到MySQL02中。
  • 下表总结了通过 Docker 实现两个 MySQL 容器的数据共享配置步骤及参数。
操作步骤命令示例说明
1. 获取 MySQL 镜像docker pull mysql:5.7拉取 MySQL 5.7 镜像。
2. 运行第一个 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=123456 --name mysq101 mysql:5.7- 端口映射:宿主机 3310 -> 容器 3306 - 配置挂载:/home/mysql/conf -> /etc/mysql/conf.d - 数据挂载:/home/mysql/data -> /var/lib/mysql - 设置 root 密码 123456 - 容器命名 mysq101
3. 运行第二个 MySQL 容器docker run -d -p 3311:3306 -e MYSQL_ROOT_PASSWORD=123456 --volumes-from mysq101 --name mysq102 mysql:5.7- 端口映射:宿主机 3311 -> 容器 3306 - 数据卷共享:使用 --volumes-frommysq101 容器共享卷 - 设置 root 密码 123456 - 容器命名 mysq102

参数说明

参数含义
-d后台运行容器。
-p 宿主机端口:容器端口端口映射。
-v 宿主机目录:容器目录卷挂载,将宿主机的目录挂载到容器中。
-e 环境变量=值设置环境变量,配置容器启动时的参数。
--name 容器名字容器命名,便于管理。
--volumes-from 其他容器名共享其他容器的卷,使两个容器的数据目录一致。
  • 小结:

    容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有容器使用为止。但是一旦持久化到了本地,这个时候本地的数据是不会删除的。

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

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

相关文章

手机怎么恢复回收站清空的照片?这里有找回相册的3个重要指南

生活里&#xff0c;从家庭聚会的美好瞬间到重要的工作文件&#xff0c;都在我们的手机相册中留下了痕迹。然而意外常常降临&#xff0c;这些数据也有可能突然消失不见&#xff0c;并且恢复回收站清空的照片失败的情况也不少见。请别着急&#xff0c;在这篇文章中&#xff0c;我…

视频智能分析平台LntonAIServer安防监控视频平台行人入侵检测算法核心特点及其应用价值

LntonAIServer行人入侵检测算法是一种基于深度学习和计算机视觉技术的先进解决方案&#xff0c;旨在提高监控系统的智能化水平&#xff0c;有效预防未经授权的人员进入重要场所&#xff0c;保障安全生产和管理。以下是关于该算法的主要特点和应用的详细介绍&#xff1a; 核心特…

性能工具之 JMeter 常用组件介绍(五)

文章目录 一、Jmeter中参数取值1、Test Plan中添加变量2、User Defined Variables 二、Jmeter中CSV Data Set Config三、Timer:定时器4、Gaussian Random Timer 高斯随机定时器5、JSR223 Timer JSR223定时器6、Poisson Random Timer 泊松随机定时器7、Synchronizing Timer 同步…

文件处理的基本操作

一、文件与流 为什么要使用文件&#xff1a;程序的处理结果在程序结束后就消失&#xff0c;要想将程序运行的结果保存下来&#xff0c;就可以将相关内容保存在文件&#xff08;file&#xff09;中。 针对文件、键盘、显示器、打印机等外部设备的数据的读写操作都是通过流&…

阿里AI图片编辑新项目,人人都可做设计师。MimicBrush本地一键整合包下载

最近阿里巴巴联合香港大学开源了一个创新图像编辑工具&#xff1a;MimicBrush&#xff0c;这个工具相当于是一个局部重绘工具。它通过先进的AI技术&#xff0c;能够将一张图片的某一部分融合到另一张图片上。 MimicBrush&#xff0c;一款颠覆传统的图像编辑神器&#xff0c;不过…

在idea里使用github copilot ,就是这么好用

Github Copilot 代码补全等功能&#xff0c;提高写代码的效率 获取地址&#xff1a;https://web.52shizhan.cn/activity/copilot 如果之前是激活器激活的&#xff0c;请到环境变量里删除相关的copilot配置。 ① 发你注册的github账号的邮箱或用户名给客服&#xff0c;客服邀…

openppp2 控制台回显窗口输出内容详解

本文介绍 openppp2 的控制窗口回显内容&#xff0c;以LINUX平台为例子&#xff0c;其它平台大同小异&#xff0c;区别只是多了一些额外的输出选项内容&#xff0c;本文会在下面补充。 在本文开始之前请查阅关联内容&#xff1a;openppp2 命令行接口详解-CSDN博客 控制台客户端…

SpringEvent扩展性利器

使用Spring Event机制可以保证高扩展性&#xff1a; 使用Spring Event来发布应用内部领域事件&#xff0c;对于事件监听器可通过注解或类的方式来扩展&#xff0c;Spring Event内部使用观察者模式&#xff0c;但api使用层面可以完全解耦事件发布和事件监听&#xff1a; 常用方式…

建筑驱鸟设备 | 建筑专用超声波驱鸟器

从半夜的鸣叫到频繁的鸟粪污染&#xff0c;鸟类活动有时会成为城市居民不得不面对的小小困扰。通过合理的驱鸟方法&#xff0c;我们可以有效地减少鸟类对建筑物的侵扰&#xff0c;保护建筑物的完好和安全&#xff0c;同时维护城市居民的生活质量。 建筑专用超声波驱鸟器&#x…

spl序表字段批量修改

如果没有条件&#xff0c;全量修改,使用run 如果没有条件&#xff0c;是可以直接使用run函数&#xff0c;对指定一个列的所有都操作&#xff0c;但是没有任何条件 如果使用了筛选条件&#xff0c;使用了select函数&#xff0c;会返回一个被筛选并且修改的序表&#xff08;有条件…

ai assistant激活成功后,如何使用

ai assistant激活成功后&#xff0c;如图 ai assistant渠道&#xff1a;https://web.52shizhan.cn/activity/ai-assistant 在去年五月份的 Google I/O 2023 上&#xff0c;Google 为 Android Studio 推出了 Studio Bot 功能&#xff0c;使用了谷歌编码基础模型 Codey,Codey 是…

【贪心算法初级训练】在花坛上是否能种下n朵花、碰撞后剩余的行星

1、在花坛上是否能种下n多花 一个很长的花坛&#xff0c;一部分地已经种植了花&#xff0c;另一部分却没有&#xff0c;花不能种植在相邻的地块上否则它们会争夺水源&#xff0c;两者都会死去。给你一个整数数组表示花坛&#xff0c;由若干个0和1组成&#xff0c;0表示没种植花…

ThreadLocal的使用

ThreadLocal 一般不会单独使用&#xff0c;基本上都是 放在一个工具类中&#xff0c;然后在拦截器中去使用&#xff08;至少存储 Token 的时候是这样的&#xff09; 这里为了更加还原真实的线上环境&#xff0c;直接就用了 拦截器统一返回全局异常捕获ThreadLocal&#xff0c;…

生信算法8 - HGVS转换与氨基酸字母表

HGVS 概念 HGVS 人类基因组变异协会(Human Genome Variation Society)提出的转录本编号&#xff0c;cDNA 参考序列(以前缀“c.”表示)、氨基酸参考序列(以前缀“p.”表示)。cDNA 中一种碱基被另一种碱基取代&#xff0c;以“>”进行表示&#xff0c;如&#xff1a;c.2186A&…

软件测试之解构单元测试

软件单元测试是对软件中的最小可测试单元进行检查和验证的过程。这些单元可以是函数、方法、类实例&#xff0c;或者是任何具有明确功能、规格定义和接口定义的程序代码模块。单元测试是软件开发过程中的最低级别的测试活动&#xff0c;它确保软件的独立单元在与程序的其他部分…

Jar打包成Service在Window运行

直接启动 bat脚本直接启动jar包 Spring Boot 部署在Windows Service启动 环境 电脑环境需要安装Microsoft.NETFramework 4 Microsoft.NETFramework 4 打包 WinSW 下载exe和xml配置文件&#xff0c;将exe和xml放在同一个目录下&#xff0c;并且重命名为一样的名字&…

Ideogram-免费使用的 AI 工具,可以生成逼真的图像、海报、徽标

工具来源:Ideogram | AI工具箱 什么是Ideogram AI? Ideogram AI是一款高效的工具,旨在将文本与AI生成的图像结合在一起。该应用程序提供了用户友好的界面,使您能够轻松地制作出色的艺术作品、标志和设计。 与传统工具不同,Ideogram AI因其能够以无与伦比的简便和速度将…

Git 查看当前分支是基于哪个分支拉取(源头分支)

场景&#xff1a; 项目中使用 Git 管理代码仓库的时候&#xff0c;随着项目的持续迭代及项目的扩展&#xff0c;多版本并行开发是非常常见的事情&#xff0c;多版本并行开发就伴随着多分支&#xff0c;随着 Git 的分支越拉越多&#xff0c;这时候很容易造成分支的混乱&#xf…

webgis 之 地图投影

地图投影 什么是地图投影目的种类等角投影的分类墨卡托投影Web 墨卡托投影 参考小结 为了更好地展示地球上的数据&#xff0c;需要将地球投影到一个平面上。地图投影是一个数学问题&#xff0c;按照一定的几何关系&#xff0c;将地球上的经纬度坐标映射到一个平面上的坐标。地球…

由 Vault 支持的 KES 的 MinIO Operator

为了提供安全锁定和擦除的合规性功能&#xff0c;MinIO 使用服务器端加密 &#xff08;SSE&#xff09; 在存储层加密对象&#xff0c;以保护对象作为写入操作的一部分。MinIO 以极高的效率做到这一点——基准测试表明 MinIO 能够以接近线速进行加密/解密。 MinIO 使用的秘诀是…