Docker匿名掛載和具名掛載的具體使用
數(shù)據(jù)卷volume
提到這個(gè)匿名掛在和具名掛載,其實(shí)要先普及一個(gè)知識(shí),就是什么是volumes,這個(gè)volumes就是數(shù)據(jù)卷的意思。我們docker掛載會(huì)用到這個(gè)卷。
數(shù)據(jù)卷的用處就是一個(gè)可供一個(gè)或者多個(gè)容器使用的特殊目錄,他繞過(guò)UFS就是什么聯(lián)合文件系統(tǒng),提供了很多功能:
(1)數(shù)據(jù)卷可以多個(gè)容器共享或者重用
(2)對(duì)數(shù)據(jù)卷修改會(huì)立馬生效
(3)對(duì)數(shù)據(jù)卷的更新不會(huì)影響鏡像
(4)數(shù)據(jù)卷默認(rèn)會(huì)一直存在,即使容器被刪除了(結(jié)合2,3點(diǎn)特別像nacos)
查看數(shù)據(jù)卷的命令可以用:
docker volume --help
實(shí)際上命令內(nèi)容也不多如下:

實(shí)際上創(chuàng)建volume不用之前去創(chuàng)建,你掛載的時(shí)候命名,找不到他就會(huì)去根據(jù)你給的名字的創(chuàng)建一個(gè)新的有名字而不是一串哈希碼的名字的數(shù)據(jù)卷volume。
匿名掛載和具名掛載
在前面的數(shù)據(jù)卷volume的知識(shí)補(bǔ)充下,實(shí)際上匿名掛在和具命掛載就能知道了,一個(gè)是沒(méi)給數(shù)據(jù)卷名字的掛載,一個(gè)是給了指定數(shù)據(jù)卷名字的掛載。
比如接著上次的掛載,我們是指定了指定路徑的掛載,其實(shí)我們可以更簡(jiǎn)單掛載,連宿主機(jī)的指定路徑不給,直接-v掛載docker容器的路徑就可以。如下匿名掛載安裝nginx。
# 匿名掛載 -P 大寫(xiě)的P, 映射隨機(jī)端口 -v 容器內(nèi)路徑 docker run -d -P --name nginx01 -v /etc/nginx nginx
實(shí)際上會(huì)返回一個(gè)哈希碼,這個(gè)就是匿名掛載的數(shù)據(jù)卷的名字,你根據(jù)這個(gè)哈希碼也可以找到對(duì)應(yīng)的數(shù)據(jù)卷,對(duì)你來(lái)說(shuō)是匿名的,實(shí)際人家還會(huì)給一個(gè)名字的。我們可以通過(guò) volume ls命令來(lái)查看都有什么數(shù)據(jù)卷。
docker volume ls
那這個(gè)具名掛載就要指定數(shù)據(jù)卷,類(lèi)似我們之前的指定路徑掛載,但是這個(gè)我們不適用具體的指定路徑而是數(shù)據(jù)卷的名字。
# VOLUME NAME 當(dāng)前顯示為匿名數(shù)據(jù)卷, 在 -v 掛載的時(shí)候只寫(xiě)了容器內(nèi)的路徑,沒(méi)有寫(xiě)宿主機(jī)的路徑 # 具名掛載 # 通過(guò) -v 卷名:容器內(nèi)路徑 docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx
數(shù)據(jù)卷的位置
我們既然設(shè)置了具體的數(shù)據(jù)卷,且對(duì)容器進(jìn)行了掛載,也知道數(shù)據(jù)卷的用處,那數(shù)據(jù)卷在哪里呢?畢竟掛載的東西都在那里,看一眼位置在哪省著被誤刪了。
實(shí)際他在docker的下面具體路徑是:
/var/lib/docker/volumes/xxxx/_data
我們可以cd到這個(gè)路徑下面看一下數(shù)據(jù)卷,像我就cd到第二個(gè)具名掛載nginx的數(shù)據(jù)卷目錄下面看一下具體結(jié)構(gòu)

總結(jié)一下我們掛載的方式都有哪些:
如何確定是具名掛載還是匿名掛載, 亦或是指定路徑掛載?
-v 容器內(nèi)路徑 # 匿名掛載
-v 數(shù)據(jù)卷名:/容器內(nèi)路徑 # 具名掛載
-v /宿主機(jī)路徑:/容器內(nèi)路徑 # 指定路徑掛載
# 通過(guò) -v 容器內(nèi)路徑: ro rw 改變讀寫(xiě)權(quán)限 # ro readonly 只讀 # rw readwrite 讀寫(xiě) # 如果設(shè)置了容器權(quán)限, 容器對(duì)掛載出來(lái)的數(shù)據(jù)就有權(quán)限限定了. docker run -d -P --name nginx04 -v juming-nginx:/etc/nginx:ro nginx docker run -d -P --name nginx04 -v juming-nginx:/etc/nginx:rw nginx # ro 只要看到ro就說(shuō)明這個(gè)路徑只能通過(guò)宿主機(jī)來(lái)操作, 容器內(nèi)部是無(wú)法操作
到此這篇關(guān)于Docker匿名掛載和具名掛載的具體使用的文章就介紹到這了,更多相關(guān)Docker匿名掛載和具名掛載內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker容器數(shù)據(jù)卷之具名掛載和匿名掛載問(wèn)題
容器數(shù)據(jù)卷就是目錄的掛載,將我們的容器的目錄掛載到宿主機(jī)上,從而實(shí)現(xiàn)打通宿主機(jī)和容器之間的文件共享功能,這篇文章主要介紹了docker容器數(shù)據(jù)卷 - 具名掛載和匿名掛載問(wèn)題,需要的朋友可以參考下2021-11-11
Docker 容器生命周期 架構(gòu) 以及和VM之間的差異詳解
這篇文章主要介紹了Docker 容器生命周期 架構(gòu) 以及和VM之間的差異詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11
詳解使用Docker快速部署ELK環(huán)境(最新5.5.1版本)
這篇文章主要介紹了詳解使用Docker快速部署ELK環(huán)境(最新5.5.1版本),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
ubuntu22通過(guò)docker安裝wechat啟動(dòng)后無(wú)界面的問(wèn)題及解決方法
這篇文章主要介紹了ubuntu22通過(guò)docker安裝wechat啟動(dòng)后無(wú)界面的解決方法,通過(guò)微信創(chuàng)建腳本發(fā)現(xiàn)一系列問(wèn)題,最終在小編的努力下順利解決,下面把解決過(guò)程分享給大家,需要的朋友可以參考下2022-07-07
詳解如何解決docker容器無(wú)法通過(guò)IP訪問(wèn)宿主機(jī)問(wèn)題
這篇文章主要介紹了詳解如何解決docker容器無(wú)法通過(guò)IP訪問(wèn)宿主機(jī)問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
解決Docker容器時(shí)區(qū)及時(shí)間不同步問(wèn)題的方法
這篇文章主要介紹了解決Docker容器時(shí)區(qū)及時(shí)間不同步問(wèn)題的方法,有效的解決了Docker容器時(shí)間同步問(wèn)題,有興趣的可以了解一下。2016-12-12
docker-swarm之使用Docker secret管理敏感數(shù)據(jù)
就Docker Swarm集群服務(wù)而言,secret 是塊狀數(shù)據(jù),例如密碼、SSH私鑰、SSL證書(shū)或其他不應(yīng)通過(guò)網(wǎng)絡(luò)傳輸或未加密存儲(chǔ)在Dockerfile或應(yīng)用程序源代碼中的數(shù)據(jù),我們可以使用Docker secret 集中管理這些數(shù)據(jù),所以接下來(lái)就帶大家了解一下如何使用Docker secret 管理敏感數(shù)據(jù)2023-08-08
云原生之使用Docker部署homer靜態(tài)主頁(yè)的方法步驟
本文主要介紹了云原生之使用Docker部署homer靜態(tài)主頁(yè)的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08

