Docker-07.Docker基础-数据卷挂载

一.案例

首先我们通过一则案例来引出问题。

我们要修改nginx容器内的html目录下的index.html文件,并且要将静态资源部署到nginx的html目录,就要首先知道该html目录的所在位置。

我们首先查看nginx镜像的帮助文档,

这里就是将有关静态资源目录的,这里面有一个说明:static-html-directory——静态的html目录。后面这个目录就是nginx容器内html目录的所在路径。 

我们通过docker进入到nginx容器内部,并cd到静态资源路径下,使用ls命令果然查看到有index.html文件。我们使用vi命令进行编辑,结果发现命令没有找到。这是为什么呢?

原因是docker的容器中并没有包含,只包含应用运行必备的系统函数。

那要在容器内修改资源非常困难,别说把文件拷贝进去了。

那该如何解决当前问题呢?这就要用到数据卷技术了。

二.数据卷

数据卷是一个虚拟目录,是容器和宿主机目录之间映射的桥梁。当我们创建数据卷时,数据卷会和容器中的文件进行关联和挂载,并且也会在宿主机中创建一个特定的目录去和数据卷进行关联。这样,宿主机文件系统和Nginx容器就通过数据卷间接关联了。当我们操作宿主机内部的文件时,Nginx容器也会执行同样的操作。反之亦然。双方修改同修改,删除同删除。

那么问题来了,我们该怎么样去创建数据卷呢?

知道了如何创建数据卷,那么我们要怎样将容器挂载在数据卷上呢?

还是使用docker run命令,使用“-v 数据卷:容器内目录”进行数据卷的挂载。数据卷名称可以任意,只要不与其他数据卷名称冲突即可。

注意:

1.当我们要进行数据卷挂载时,要在容器被创建的同时进行挂载,否则后续将无法挂载。如果创建时未挂载,以后将没有办法再挂载。

2.如果数据卷不存在将自动挂载,这也就意味着我们不用执行docker volume create命令来创建数据卷。

三.命令

# 1.首先创建容器并指定数据卷,注意通过 -v 参数来指定数据卷
docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx# 2.然后查看数据卷
docker volume ls
# 结果
DRIVER    VOLUME NAME
local     29524ff09715d3688eae3f99803a2796558dbd00ca584a25a4bbc193ca82459f
local     html# 3.查看数据卷详情
docker volume inspect html
# 结果
[{"CreatedAt": "2024-05-17T19:57:08+08:00","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/html/_data","Name": "html","Options": null,"Scope": "local"}
]# 4.查看/var/lib/docker/volumes/html/_data目录
ll /var/lib/docker/volumes/html/_data
# 可以看到与nginx的html目录内容一样,结果如下:
总用量 8
-rw-r--r--. 1 root root 497 12月 28 2021 50x.html
-rw-r--r--. 1 root root 615 12月 28 2021 index.html# 5.进入该目录,并随意修改index.html内容
cd /var/lib/docker/volumes/html/_data
vi index.html# 6.打开页面,查看效果# 7.进入容器内部,查看/usr/share/nginx/html目录内的文件是否变化
docker exec -it nginx bash

当执行了创建镜像并挂载的操作之后,我们查看数据卷。通过以下命令:

docker volume ls

可以看到下面确实有一个名为html的数据卷。

接着我们查看挂载点,即该数据卷挂载到宿主机的哪个位置上了。我们执行命令:

docker volume inspect html

可以看到该数据卷挂载到宿主机的"/var/lib/docker/volumes/html/_data"路径上了。 

# 3.查看数据卷详情
docker volume inspect html
# 结果
[{"CreatedAt": "2024-05-17T19:57:08+08:00","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/html/_data","Name": "html","Options": null,"Scope": "local"}
]

这就展示了该数据卷的详细信息,其中Mountpoint展示了其挂载在宿主机上的详细位置。

我们可以进入到该目录下:

cd /var/lib/docker/volumes/html/_data

ll就可以看到nginx的html里面的内容了。

我们便可以在这里使用vi进行修改,但是并不用这么麻烦,我们只要双击index.html就可以进行修改了。 

 

拖拽即可上传到挂载点。

 访问静态资源可以直接看到。

接下来我们再次进入容器,查看有没有我们想要的静态资源:

可以看到1.jpeg,50x.html和index.html都有。说明在宿主机内做的操作在容器内都出现了。

总结

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

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

相关文章

数据结构(三)双向链表

一、什么是 make 工具?make 是一个自动化构建工具,主要用于管理 C/C 项目的编译和链接过程。它通过读取 Makefile 文件中定义的规则,自动判断哪些文件被修改,并仅重新编译这些部分,从而大幅提高构建效率。二、什么是 M…

如何在没有iCloud的情况下将联系人转移到新iPhone?

升级到新 iPhone 后,设置已完成,想在不使用 iCloud 的情况下将联系人从 iPhone 转移到 iPhone 吗?别担心。还有其他 5 种方法可以帮助您轻松地将联系人转移到新 iPhone。这样,您就无需再次重置新设备了。第 1 部分:如何…

SpringBoot3.x入门到精通系列:4.2 整合 Kafka 详解

SpringBoot 3.x 整合 Kafka 详解 🎯 Kafka简介 Apache Kafka是一个分布式流处理平台,主要用于构建实时数据管道和流应用程序。它具有高吞吐量、低延迟、可扩展性和容错性等特点。 核心概念 Producer: 生产者,发送消息到Kafka集群Consumer: 消…

Android audio之 AudioDeviceInventory

1. 类介绍 AudioDeviceInventory 是 Android 音频系统中的一个核心类,位于 frameworks/base/services/core/java/com/android/server/audio/ 路径下。它负责 管理所有音频设备的连接状态,包括设备的添加、移除、状态更新以及策略应用。 设备连接状态管理:记录所有已连接的音…

系统设计入门:成为更优秀的工程师

系统设计入门指南 动机 现在你可以学习如何设计大规模系统,为系统设计面试做准备。本指南包含的是一个有组织的资源集合,旨在帮助你了解如何构建可扩展的系统。 学习设计大规模系统 学习如何设计可扩展系统将帮助你成为更优秀的工程师。系统设计是一个…

Pandas数据分析工具基础

文章目录 0. 学习目标 1. Pandas的数据结构分析 1.1 Series - 序列 1.1.1 Series概念 1.1.2 Series类的构造方法 1.1.3 创建Series对象 1.1.3.1 基于列表创建Series对象 1.1.3.2 基于字典创建Series对象 1.1.4 获取Series对象的数据 1.1.5 Series对象的运算 1.1.6 增删Series对…

大模型——Qwen开源会写中文的生图模型Qwen-Image

Qwen开源会写中文的生图模型Qwen-Image 会写中文,这基本上是开源图片生成模型的独一份了。 这次开源的Qwen-Image 的最大卖点是“像素级文字生成”。它能直接在像素空间内完成排版:从小字注脚到整版海报均可清晰呈现,且同时支持英文字母与汉字。 以下图片均来自官网的生成…

大模型知识库(1)京东云 JoyAgent介绍

一、核心定位​ JoyAgent 是京东云推出的 ​首个 100% 开源的企业级多智能体平台,定位为“可插拔的智能发动机”,旨在通过开箱即用的产品级能力,降低企业部署智能体的门槛。其特点包括: ​完整开源​:前端&#xff0…

PowerShell 入门2: 使用帮助系统

PowerShell 入门 2:使用帮助系统 🎯 一、认识 PowerShell 帮助系统 1. 使用 Get-Help 查看命令说明 Get-Help Get-Service或使用别名: gsv2. 更新帮助系统 Update-Help3. 搜索包含关键词的命令(模糊搜索) Help *log*&a…

hyper-v实战系列:显卡虚拟化(GPU分区)--windows篇详解

一般来说,windows系统中最常使用的虚拟机就3个:vmware workstation,virtualbox和微软系统自带的hyper-v。后面与前两者最大的区别就是能调用物理显卡的性能。 我在这篇博文会详述如何设置windows虚拟机的显卡虚拟化,并会随之…

WebGL应用实时云渲染改造后如何与网页端实现数据通信

WebGL是一种基于OpenGL ES 2.0的Web技术,属于BS架构,它允许在浏览器中渲染交互式3D和2D图形。 随着大场景高精度的开发要求深入,对于较高级的 WebGL 应用程序,需要性能更强的系统要求,如仍然维持低端硬件或浏览器&…

初始化列表,变量存储区域和友元变量

前言初始化列表是书写构造函数的一种方式,某些成员变量之只能通过初始化列表进行初始化。另外学习c不可避免地需要知道什么样的变量存储在什么区域当中如栈,堆,静态区,常量区初始化列表书写格式书写上,初始化列表&…

excel插入复选框 亲测有效

特别说明 1.开始位置是0 2.\u0052是勾选对号 3.\u25A1是不勾选 4.\u0052长度是1 5.\u25A1长度是1 6.汉字长度是1 7.起止位置不能超过索引位置(比如整体长度是6,截止位置最大填写5) 示例代码 package com.zycfc.xz.Util.excel;import org.apache.poi.hssf.usermodel.HSSFRichT…

Mac上优雅简单地使用Git:从入门到高效工作流

Mac上优雅简单地使用Git:从入门到高效工作流 本文将带你解锁在Mac上优雅使用Git的技巧,结合命令行与图形工具,让版本控制变得轻松高效! 一、为什么Mac是Git的最佳搭档? 天生支持Unix命令:Git基于Linux开发…

一文了解SOA的纹波

什么是光谱纹波我们在SOA/RSOA/SLD的ASE(放大的自发辐射)光谱测试中,经常会观察到光谱中有周期性的变化,通常我们称之为纹波。在实际应用中,我们大多不希望这些纹波的存在。添加图片注释,不超过 140 字&…

ossutil 使用方法

目录 ossutil 使用方法 1. 📤 上传文件/文件夹到 OSS 上传单个文件: 上传整个文件夹(递归): 2. 📥 从 OSS 下载文件/文件夹 下载单个文件: 下载整个文件夹: ossutil 使用方法…

从“多、老、旧”到“4i焕新”:品牌官方商城(小程序/官网/APP···)的范式跃迁与增长再想象

全新升级版本「佛罗伦萨小镇奥莱GO」商城正式上线!会员福利加码 2025年,品牌官方商城应该如何定义?—— 还是一套“电商货架”? 在商派看来,现如今“品牌官方商城”则需要重新定义,结合不同品牌企业的业务…

WIN QT libsndfile库编译及使用

一、概述 libsndfile库是一个用 C 语言编写的开源库,用于读取和写入多种音频文件格式。 环境:QT5.9.9、cmakegui3.23.0、QT的编译器是minWG32 二、安装 1、下载libsndfile源码,连接:https://github.com/libsndfile/libsndfile…

Supergateway教程

Supergateway 是一款专为 MCP(Model Context Protocol)服务器设计的远程调试与集成工具,通过 SSE(Server-Sent Events)或 WebSocket(WS)协议实现基于 stdio 的服务器与客户端的高效通信。 Super…

203.移除链表元素 707.设计链表 206.反转链表

203.移除链表元素 Python链表节点定义: class ListNode:def __init__(self, val, nextNone):self.val valself.next next 性能分析 链表的特性和数组的特性进行一个对比,如图所示: 203. 移除链表元素 这道题就是给大家一个链表&#x…