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
英文地址,請注明出處:http://en.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…