【Docker】数据卷挂载以及宿主机目录挂载的使用

news2024/11/18 21:53:43

🎉🎉欢迎来到我的CSDN主页!🎉🎉

🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚

🌟推荐给大家我的专栏《Docker实战》。🎯🎯

👉点击这里,就可以查看我的主页啦!👇👇

Java方文山的个人主页

🎁如果感觉还不错的话请给我点赞吧!🎁🎁

💖期待你的加入,一起学习,一起进步!💖💖

请添加图片描述

目录

✨前言

一、数据卷挂载

1.数据卷是什么

2.数据卷的基本使用

创建数据卷

查看所有数据卷

查看数据卷信息

 删除一个volume

挂载数据卷

查看是否挂载成功

二、宿主机目录挂载

1.什么是目录挂载

2.目录挂载的基本使用

挂载目录

三、案例(实现Tomcat在线部署)


 

✨前言

假设我们有一个容器化的机器学习模型训练应用程序。该应用程序需要大量的训练数据来进行模型的训练,而这些训练数据可能会占据大量的存储空间。如果我们将训练数据直接放在容器内部,会导致容器的镜像体积增大,每次创建或启动容器都需要复制整个数据集,这将消耗大量的时间和存储资源,而且容器被删除了不可逆,那么就会导致数据丢失非常的不方便。

当使用数据卷挂载和宿主机目录挂载时:

  1. 数据库存储:在容器化的应用程序中,数据库通常需要持久化存储数据。通过将数据库的数据卷挂载到容器中,可以确保数据在容器重启或更新时不会丢失。这样,即使容器被销毁,数据仍然可以在其他容器中使用。数据卷挂载还可以用于容器之间共享数据库的备份文件。

  2. Web服务器日志:对于运行在容器中的Web服务器,日志文件是非常重要的记录和分析工具。通过将宿主机上的日志目录挂载到容器中,可以实时记录容器内的日志,并将其保存到宿主机上。这样,在容器重启或删除后,日志仍然可以在宿主机上进行查看和分析。

  3. 文件共享:如果有多个容器需要访问相同的文件(例如配置文件、证书文件等),可以将这些文件放置在宿主机上的一个目录中,并将该目录通过宿主机目录挂载到各个容器中。这样,所有容器都可以共享和访问这些文件,而不需要在每个容器中复制一份。

  4. 静态资源存储:对于网站或应用程序中的静态资源(如图片、CSS和JavaScript文件),可以将这些资源放置在宿主机上的一个目录中,并通过宿主机目录挂载到运行Web服务器的容器中。这样,容器就可以直接从宿主机上加载和提供静态资源,而不需要将资源复制到每个容器中。

一、数据卷挂载

1.数据卷是什么

数据卷是一个虚拟目录,它将宿主机目录映射到容器内目录,方便我们操作容器内文件,或者方便迁移容器产生的数据。

为了很好的实现数据保存和数据共享,Docker提出了Volume这个概念,简单的说就是绕过默认的联合文件系统,而以正常的文件或者目录的形式存在于宿主机上。又被称作数据卷。

数据卷 是一个可供一个或多个容器使用的特殊目录,它绕过 UFS可以提供很多有用的特性:

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

2.数据卷的基本使用

创建数据卷
docker volume create 数据卷名称

查看所有数据卷
docker volume ls

  

查看数据卷信息
docker volume inspect my-vol

 

 删除一个volume
docker volume rm my-vol

数据卷 是被设计用来持久化数据的,它的生命周期独立于容器,Docker不会在容器被删除后自动 删除数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的数据卷,无主的数据卷 可能会占据很多空间,所以要及时删除.

挂载数据卷

在用 docker run 命令的时候,使用 --mount 标记来将 数据卷 挂载到容器里。在一次 docker run 中可以挂载多个 数据卷 。

docker run -itd \
--name 容器名字 \
--mount source=数据卷名称,target=容器中的对应目录 \
镜像名称

最好是通过run而非create/start创建启动容器,create/start命令创建启动容器后,再挂载数据卷 相当麻烦,要修改很多配置文件,但并非不可以。

加了“\”意为将最后的回车换行给注释了,系统理解为命令还没有结束,因而是继续等待用户进行 输入,直到读到结束符,如回车

  • 如果数据卷不存在,docker会自动创建
  • 如果容器上目录不存在, docker会自动创建

注意:-it挂载后会直接进入容器,-itd则是在挂载不进入

查看是否挂载成功

首先查看我们数据卷的目录位置

docker inspect name

该目录就是数据卷的目录,我们现在进入该目录新建一个文本

然后我们进入容器查看是否有该文件,如果有文件说明挂载成功实现共享

二、宿主机目录挂载

1.什么是目录挂载

录挂载是将主机上的一个目录直接挂载到容器中,容器中的文件会直接覆盖主机上的文件,这种方式不适合多个容器共享数据。目录挂载的好处是可以方便地将主机上的文件或目录与容器中的文件或目录进行同步,方便开发和调试。

2.目录挂载的基本使用

首先我们在宿主机上创建一个目录用于存放资源

将提前准备好的war放入该目录中

挂载目录
docker run -itd \
--name 容器名字 \
--mount type=bind,source=宿主机目录,target=容器中的对应目录 \
镜像名称

或者使用简化版本

docker run -itd \
--name t1 \
-v /soft:/user/local/tomcat/webapps \
-p 8080:8080 \
tomcat:8.5.40

解释该命令的各个部分如下:

  • docker run: 运行一个新的容器。
  • -itd: 这是三个选项的组合:
    • -i:保持标准输入 (stdin) 打开,即使未附加也可以与容器进行交互。
    • -t:为容器分配一个伪终端 (pseudo-TTY)。
    • -d:将容器设为后台运行模式。
  • --name t1:为容器指定一个名称为 "t1",以便于管理和引用它。
  • -v /soft:/user/local/tomcat/webapps:将本地宿主机上的目录 /soft 挂载到容器内的 /user/local/tomcat/webapps 目录。这意味着容器中的 Tomcat 应用程序将能够访问并使用位于 /soft 目录下的文件。
  • -p 8080:8080:将容器内的端口 8080 映射到宿主机的端口 8080。这样,当在宿主机上访问 http://localhost:8080 时,实际上是访问容器内运行的 Tomcat 服务器。
  • tomcat:8.5.40:使用 tomcat:8.5.40 镜像启动容器。 

 但是这么使用有一个弊端,它是将整个文件夹进行替换我们想要的效果是单个文件进行替换

docker run -itd \
--name t1 \
-v /soft/oapro.war:/user/local/tomcat/webapps/oapro.war \
-p 8080:8080 \
tomcat:8.5.40

 这样就可以精准替换我们想要的文件并且不应该原文件了

三、案例(实现Tomcat在线部署)

实现 Tomcat 在线部署是指在 Tomcat 运行的过程中,通过上传 WAR 文件或目录来动态地添加、删除或更新 Web 应用程序。这种方式可以避免每次更改应用程序时都要重新启动 Tomcat 的麻烦,并大大提高了开发和调试的效率。

但是直接点击就会报错,原因是因为我们没有用户信息

 

 所以我们现在结合上面的内容进行目录挂载,首先我们需要

修改E:\apache-tomcat-8.5.40\webapps\manager\META-INF\context.xml

修改E:\apache-tomcat-8.5.40\conf\tomcat-users.xml

将就该完成的文件复制到liunx目录中

将我们docker中的tomcat文件进行替换

docker run -itd \
--name t1 \
-v /soft/tomcat-users.xml:/user/local/tomcat/conf/tomcat-users.xml \
-v /soft/context.xml:/user/local/tomcat/webapps/manager/META-INF/context.xml \
-p 8080:8080 \
tomcat:8.5.40

请添加图片描述

到这里我的分享就结束了,欢迎到评论区探讨交流!!

💖如果觉得有用的话还请点个赞吧 💖

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

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

相关文章

使用Pygame库来显示一个简单的窗口,并绘制一些基本的形状和文本

import pygame from pygame.locals import *# 初始化pygame库 pygame.init()# 创建窗口并设置大小和标题 screen_width 800 screen_height 600 screen pygame.display.set_mode((screen_width, screen_height)) pygame.display.set_caption("My Pygame")# 定义颜色…

未来饮食方向——通过精准营养降低慢性病风险

谷禾健康 营养对于身体健康和疾病预防的重要性已得到充分证实,全球膳食指南建议也得到了明确定义,以指导有效的政策。然而,吃什么、何时吃以及如何保持健康地优化饮食模式实际上非常复杂。 许多因素会影响饮食模式,包括个人的生理…

YOLOv6s,map值打印成两位小数(原本是显示0.538,变成显示为53.79)

显示结果 更改前: 更改后: 方法 将tools/eval.py中的--do_pr_metric后面改为defaultTrue即可打印出map值原本是显示0.538,变成显示为53.79,方法为👇 在YOLOv6-main/yolov6/core/evaler.py中做如下更改&#xff1a…

计算机缺失msvcp140.dll的修复教程,教你快速解决dll问题

“针对计算机系统中出现的msvcp140.dll文件丢失问题,小编将详细阐述一系列有效的解决方法。首先,msvcp140.dll是Microsoft Visual C Redistributable Package中的一个关键动态链接库文件,对于许多应用程序的正常运行至关重要。当系统提示该文…

鸿蒙HarmonyOS兼容JS的类Web开发

鸿蒙HarmonyOS兼容JS的类Web开发 文章目录 鸿蒙HarmonyOS兼容JS的类Web开发文件组织目录结构文件访问规则媒体文件格式 js标签配置pageswindow示例 app.js应用生命周期应用对象6 HML语法参考页面结构数据绑定普通事件绑定冒泡事件绑定5捕获事件绑定5列表渲染条件渲染逻辑控制块…

【.net core】yisha框架,bootstrap-table组件增加固定列功能

需要引入 bootstrap-table-fixed-columns.css和bootstrap-table-fixed-columns.js文件 文件代码: bootstrap-table-fixed-columns.css样式文件代码 .fixed-table-header-columns, .fixed-table-body-columns {position: absolute;background-color: #fff;displa…

企业知识库搭建全流程,中小型企业必看

知识库是企业知识管理和信息查询的重要平台,对企业效率提升,业务流程规范和企业文化建设有着重要的影响。那么,如何为企业搭建一个合适,高效,易用的知识库呢?接下来就为中小型企业详解企业知识库搭建全流程…

C++力扣题目257--二叉树的所有路径

给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入:root [1,2,3,null,5] 输出:["1->2->5","1->3"]示例 …

养猫家庭怎么挑选宠物空气净化器?猫用空气净化器推荐来了!

宠物空气净化器在近年来越来越受到关注,它们被宣传为解决宠物家庭空气质量问题的神器。然而,一些人认为宠物空气净化器只是商家们利用人们对宠物的爱而推出的一种所谓的“智商税”,那么作为一位养猫多年的铲屎官,我可以说宠物空气…

【AI视野·今日Sound 声学论文速览 第四十五期】Wed, 10 Jan 2024

AI视野今日CS.Sound 声学论文速览 Wed, 10 Jan 2024 Totally 12 papers 👉上期速览✈更多精彩请移步主页 Daily Sound Papers Masked Audio Generation using a Single Non-Autoregressive Transformer Authors Alon Ziv, Itai Gat, Gael Le Lan, Tal Remez, Felix…

2024 爱分析 · AI 与大模型高峰论坛:和鲸喜获两项殊荣!

1 月 9 日下午,“2024 爱分析 AI 与大模型高峰论坛”在京举办。本次论坛以“智能涌现,价值焕新”为主题,汇聚众多专家学者、实践先驱,共同探讨 AI 与大模型在企业内的新场景、新价值、新路径。论坛中,和鲸科技成功入选…

【数据链路层】802.11无线局域网的基本概述(湖科大慕课自学笔记)

802.11无线局域网基本概述 1:无线局域网(WLAN) 1:基本概述 2:802.11无线局域网可以分为以下两类 有固定基础设施的与无固定基础设施的 固定基础设施是指 我们来举例说明: 2:有固定基础设施…

SAP存放状态的几个常用表

SAP存放状态的几个常用表 在sap中,包括订单、项目、计划、设备主数据等,存在审批流程的业务单据,这些业务对象都会有状态的属性,用来控制和约束该业务当前的操作。 主要的表 JEST:存放了该对象编号的当前状态 JCDS…

蓝奏云获取下载链接js逆向

本期地址如下,使用base64解密获得 aHR0cHM6Ly9meGpkLmxhbnpvdXcuY29tL2l6bkxrMTdncnkyZA 获取最终的下载链接需要经过三次请求获得,如下图 每个请求都包含下一次请求的信息,我们逐步分析请求 第一个请求直接包含了第二次请求的src 第二个请…

团结引擎的安装

团结引擎有多种方式可以安装,具体可以参考团结引擎官方文档,这里我们使用最简单的安装方式,通过团结Hub来安装。 1. 安装 Tuanjie Hub 进入团结引擎官网,点击右上角的【下载Unity】,进入下载界面,选择“下载…

react使用recoil进行全局状态管理 + axios进行网络请求

我们尝试使用recoil进行全局状态管理以及axios进行网络请求。 recoil recoil是facebook官方推出的新的react状态管理方案,采用分散管理原子状态的设计模式,同时也强调immuteable(mobx则是mutable),这与react强调immu…

jQuery文字洗牌动效

html代码 效果展示 jQuery文本洗牌效果插件 <div class"container"><p class"lead">文本洗牌动画特效</p><h1 id"basic">A time to seek,</h1><h1 id"custom">and a time to lose;</h1> &…

5G前装搭载率即将迈过10%大关,车载通讯进入多层次增长通道

对于智能化来说&#xff0c;车载通讯性能的提升&#xff0c;对于相关功能的用户体验优化、进一步减少通讯时延以及打开应用新空间&#xff0c;至关重要。 目前&#xff0c;2G/3G正在进入运营商逐步关闭运营的阶段&#xff0c;4G依然是主力&#xff0c;但5G也在迎来新的增长机会…

1. seaborn-可视化统计关系

统计分析是了解数据集中的变量如何相互关联以及这些关系如何依赖于其他变量的过程。可视化是此过程的核心组件&#xff0c;这是因为当数据被恰当地可视化时&#xff0c;人的视觉系统可以看到指示关系的趋势和模式。 这里介绍三个seaborn函数。我们最常用的是relplot()。这是一…

FPGA开发设计

一、概述 FPGA是可编程逻辑器件的一种&#xff0c;本质上是一种高密度可编程逻辑器件。 FPGA的灵活性高、开发周期短、并行性高、具备可重构特性&#xff0c;是一种广泛应用的半定制电路。 FPGA的原理 采用基于SRAM工艺的查位表结构&#xff08;LUT&#xff09;&#xff0c;…