LaoCat带你认识容器与镜像(三【上】)

news2025/1/23 10:32:23

有道是每逢佳节倍惰怠 ~,春节期间随缘更新吧 ~

本章内容

Docker挂载数据卷相关。

本文实操全部基于Ubuntu 20.04
宿主机 => linux服务器本身

前边章节就介绍过Docker数据卷相关的知识点,也特别强调了生产环境一定要记得挂载数据卷,编程的小伙伴们都明白数据的重要性,尤其是生产环境数据的重要性,一旦丢失无法找回,随时就有可能面临被被迫提桶跑路,Docker想到了这一点,所以为数据的管理提供了非常好的支持。

docker run执行可以添加很多的附加命令,本章都以该命令为基础进行示例。

在创建容器时创建一个数据卷
docker run -v可以指定在容器内创建一个数据卷,-v可以多次添加,意味着可以创建多个数据卷,执行命令如下。

可以看到容器内部我们刚刚指定创建的俩个数据卷。


宿主机目录\文件挂载

以宿主机目录为数据卷
同样docker run -v也可以挂载一个本地已有的目录到容器中去作为数据卷,这是我们最常使用的挂载方式,非常推荐,执行命令如下。

我们将宿主机目录/laocat_nginx_data挂载为容器的/laocat目录。
我们添加一个文件temp.txt到该宿主机目录下,然后神奇的一幕出现了,容器内的laocat目录也出现了temp.txt文件,并且内容一致。

上述场景经常出现在mysqlredis等需要挂载指定配置文件场景中,一是可以将配置文件全局统一;二是可以随时随地根据不同需求切换不同环境变量来使容器达到预期效果。


挂载宿主机文件为数据卷
同样使用docker run -v可以挂载宿主机上的文件为容器中的数据卷,这种方式很少出现,执行命令如下。

此方式存在一定的问题,如果选择宿主机的某个文件为容器中的数据卷,我们尝试修改宿主机的这个文件后,可能会造成文件inode的改变,就会导致宿主机文件内容会与容器内文件内容不一致,故不推荐使用。


数据卷容器挂载

有些情况下我们需要在容器之间共享一些持续更新的数据,那么最简单的方式就是使用数据卷容器,数据卷容器也是一个容器,专门提供数据卷供其他容器挂载。
我们创建一个数据卷容器tempv,并在容器内创建一个数据卷tempv,执行命令如下。

然后,创建俩个挂载tempv数据卷容器的容器,tempv1tempv2


此时,tempv1tempv2都挂载的同一个数据卷容器tempv,且挂载相同目录tempv,任意容器该目录下的操作,都会在其他容器中看到,比如我们在该目录下增加一个文件hello.txt并输入内容,执行命令如下。

这时我们查看另外俩个容器内该目录下是否发生了预期的结果,执行命令如下。


-v前边我们提到可以多次使用,那么--volumes-from也是可以多次使用,多次使用相当于从多个容器挂载多个数据卷,也可以从已经挂载了容器卷的容器来挂载数据卷,执行命令如下。

※ 需要注意使用--volumes-from所挂载数据卷的容器本身并不需要保持在运行状态;同时也需要注意删除挂载的容器(tempvtempv1tempv2),数据卷并不会被自动删除,如果要删除数据卷,必须在删除最后一个挂载它的容器时显式的使用docker rm -v命令来指定同时删除关联的容器。


备份与还原

宿主机挂载
宿主机挂载的备份与还原方案多种多样,就是linux的备份与还原,可以将挂载目录定期备份到本地,还原时拷贝到宿主机上即可。


数据卷容器挂载

  1. 备份
    使用如下命令,可以备份tempv数据卷容器内的数据卷。

    命令有些复杂不是很容易理解,建议多读几次并结合上图命令来理解,首先我们利用ubuntu镜像创建了一个容器bak,然后使用--volumes-from tempv来让bak容器挂载tempv容器的数据卷tempv;然后使用-v $(pwd):/bakup来挂载本地的当前目录到bak容器的/bakup目录。

    bak容器启动后,执行tar cvf /bakup/bak.tar /tempv命令来将/tempv下内容备份为容器内的/bakup/bak.tar及宿主机当前目录下的bak.tar文件。

  2. 还原
    恢复就比较容易理解,我们执行命令创建一个带数据卷的容器tempvv,执行命令如下。

    然后创建另一个容器,挂载tempvv的容器,并使用untar解压备份文件到所挂载容器卷中,执行命令如下。


☆ 参考文献:
《Docker技术入门与实战》 第2版
《Docker技术入门与实战》 第3版

◎ 文中所用到的资源链接:
【Linux inode 详解】https://www.cnblogs.com/llife/p/11470668.html

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

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

相关文章

【前端】Vue项目:旅游App-(11)city:添加热门数据、动态修改索引栏、点击跳转、显示城市

文章目录目标过程与代码添加热门数据热门数据样式索引栏索引监听点击、保存数据、回退首页跳转到city页、显示城市效果总代码修改的文件city.jscurrentGroupCity.vuehome.vue目标 上一篇以indexBar的形式显示了数据:【前端】Vue项目:旅游App-&#xff0…

【Kubernetes 企业项目实战】01、使用 kubeadm 安装 K8s-v1.23 高可用集群

目录 K8s-v1.23 安装环境规划 kubeadm 和二进制安装 k8s 适用场景分析 一、初始化安装 k8s 集群的环境 1.1 初步的环境初始化 1.2 配置主机之间无密码登录 1.3 关闭交换分区 swap 提升性能 1.4 修改机器内核参数 1.5 配置阿里云的 repo 源 1.6 配置安装 k8s 组件需要…

python调试器 ipdb

文章目录1. 介绍1.1 常用调试方式1.2 安装 ipdb2. 用法3. 命令3.1、查看源代码3.2、添加断点3.3 添加临时断点3.4 清除断点3.5、打印变量值3.6、逐行调试命令3.7、非逐行调试命令3.8 跳出函数,跳入函数3.9、查看当前函数所有参数3.10 打印变量的值3.11、打印变量类型…

11. 盛最多水的容器

给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾斜容器。 示例…

【openGauss】在openEuler(ARM架构)上安装openGauss(单机版)

一、系统版本介绍 当前案例中的openGauss安装,底层操作系统为openEuler-20.03-LTS版本,当前openGauss对Python版本兼容性最好的是Python 3.6版本与Python 3.7版本,该实验使用的openEuler版本自带Python 3.7.4,不需要再自行安装 二…

光电探测器怎么选

想要挑选光电探测器,首先应该理解探测器的重要的几个指标。 实际看一个光电探测器吧 输入输出接口三个部分,光纤输入,射频输出,电源供电 数据手册 捡几个难理解的说说,详细推导解释这里不赘述了,难理解的…

【二】Netty 搭建简单的http服务

Netty 搭建简单的http服务Netty 简介代码展示netty 依赖NettyServer netty 服务端启动类MyChannelInitializer 设置编码解码器,并添加自己的业务方法MyClientHandler 实现自己的业务方法。主要方法 是读取到数据后处理效果展示服务端打印截图采用Postman 测试 截图N…

JDBC 实现增删改查的实际操作,很简单

大家好&#xff0c;今天给大家分享一下JDBC 实现增删改查的实际操作 我们还是使用的Maven的方式&#xff0c; 首先要创建一个干净的Maven webapps项目 看这个就可以了 要导入相关的依赖 <dependencies><!-- https://mvnrepository.com/artifact/mysql/mysql-connec…

如何使用 HTML5 Web 连接到 VMware vSphere Hypervisor

本文将向你展示如何在计算机上连接 VMware vSphere Hypervisor 7.0.3,VMware vSphere Hypervisor 7.0.3 也称为 ESXi 7.0.3。 连接 ESXi 7.0.3 下载工具以管理 ESXi 主机服务器连接 ESXi 7.0.3 服务器下载工具以管理 ESXi 主机服务器 现在不需要任何工具来管理 ESXi 7.0.3,从…

1.8周报

SourceURL:file:///home/mrl/文档/1.8周报.docx 周报 代码行数&#xff1a; 周一 611 周二 672 周三 524 周四 528 周五 450 周六 545 周日 564 遇到的问题&#xff1a; 系统配置问题&#xff1a; 在升级安装python3时&#xff0c;由于操作失误&#xff0c;导…

数据脱敏实战经验

1. 创建隐私数据类型枚举&#xff1a;PrivacyTypeEnum2. 创建自定义隐私注解&#xff1a;PrivacyEncrypt3. 创建自定义序列化器&#xff1a;PrivacySerializer4. 隐私数据隐藏工具类&#xff1a;PrivacyUtil5. 注解使用这两天在整改等保测出的问题&#xff0c;里面有一个“用户…

如何将.md文件转换为pdf

目录 1.step1&#xff1a; 安装Visual Studio Code&#xff08;简称VScode&#xff09; 2.step2&#xff1a; 安装定制化插件 3.step3&#xff1a; 进入预览窗口模式 4.step4&#xff1a; 进行格式转换 1.step1&#xff1a; 安装Visual Studio Code&#xff08;简称VScode&a…

【实战篇】39 # 如何实现世界地图的新冠肺炎疫情可视化?

说明 【跟月影学可视化】学习笔记。 世界地图新冠肺炎疫情可视化 下面将实现世界地图新冠肺炎疫情可视化。数据用的是从 2020 年 1 月 22 日到 3 月 19 日这些天的新冠肺炎疫情进展。效果类似下图&#xff1a;https://covid19.who.int/ 步骤一&#xff1a;准备世界地图可视化…

[ 数据结构 ] 迪杰斯特拉算法(最短路径问题)

0 最短路径问题 战争时期&#xff0c;胜利乡有 7 个村庄(A, B, C, D, E, F, G) &#xff0c;现在有六个邮差&#xff0c;从 G 点出发&#xff0c;需要分别把邮件分别送到 A, B, C , D, E, F 六个村庄各个村庄的距离用边线表示(权) &#xff0c;比如 A – B 距离 5 公里问&#…

不透明度和填充的区别

提纲 1、不透明度和填充的相同之处 2、不透明度和填充的不同之处 3、从字面意思理解不透明度和填充 1、不透明度和填充的相同之处 在初学PS时&#xff0c;一定对“不透明度”和“填充”非常迷惑&#xff0c;它们在图层面板的这个位置 这篇就来详细聊聊这两个滑块&#xff0…

SSR是什么?Vue中怎么实现?

一、是什么 Server-Side Rendering 称其为SSR&#xff0c;意为服务端渲染 指由服务侧完成页面的 HTML 结构拼接的页面处理技术&#xff0c;发送到浏览器&#xff0c;然后为其绑定状态与事件&#xff0c;成为完全可交互页面的过程 先来看看Web3个阶段的发展史&#xff1a; 传…

Dart基础

一、dart概述 Dart简介 Dart 是谷歌开发的&#xff0c;类型安全的&#xff0c;面向对象的编程语言&#xff0c;被应用于Web、服务器、移动应用和物联网等领域。Dart 诞生于 2011 年 10 月 10 日Dart简单易学(类似TypeScript, 是强类型的语言)运行方式 原生虚拟机(Dart 代码可…

从执行者到管理者的角色转变

前言 在职场中因为岗位职责的差异&#xff0c;我们通过被分为两种角色&#xff0c;即执行者和管理者&#xff1b;大部分管理者也是从执行者晋升来的。 因为思维的惯性&#xff0c;导致我们会很容易带着执行者的意识去做管理&#xff0c;遇到问题就会想着自己动手去做&#xff0…

智慧防雷+智能防雷的综合应用方案

随着物联网时代的到来&#xff0c;信息共享成为社会运转的动力&#xff0c;伴随着现代建筑、交通、医疗以及工业制造等行业的智能化&#xff0c;大量微电子网络、自动化设备、计算机等投入使用&#xff0c;其集成度高、工作电压小、工作电流低、绝缘强度低、耐过电压和过电流能…

HDMI接口电路设计

HDMI是一个能传输高清视频和多声道音频的接口&#xff0c;常用的有TYPE A&#xff0c;TYPEC&#xff0c;和TYPE D的HDMI&#xff0c;最常用的是这种TYPE A的HDMI接口&#xff0c;这个是母座HDMI TYPE A插座的引脚信号定义大家可以看下&#xff0c;总共包含19个引脚。其中TMDS d…