Docker run命令掛載本地兩個目錄到容器內(nèi)的詳細(xì)教學(xué)
docker run 掛載多個本地目錄/文件到容器內(nèi)的核心規(guī)則是:多次使用 -v 參數(shù),每個 -v 對應(yīng)一組「本地路徑:容器內(nèi)路徑」的映射關(guān)系,參數(shù)順序無要求,可根據(jù)需求任意排列,適配所有Docker鏡像(含你的Label Studio)。
一、通用標(biāo)準(zhǔn)寫法(核心格式)
docker run [其他參數(shù)(-d/-p/--name等)] \
-v 本地目錄1的路徑:容器內(nèi)目標(biāo)目錄1的路徑 \
-v 本地目錄2的路徑:容器內(nèi)目標(biāo)目錄2的路徑 \
鏡像名:標(biāo)簽
關(guān)鍵說明:
- 每個
-v獨立配置一個掛載關(guān)系,無數(shù)量限制(可掛載2個、3個及以上); - 本地路徑支持相對路徑(
$(pwd)/xxx,推薦,代表當(dāng)前終端目錄下的xxx)和絕對路徑(/root/xxx); - 容器內(nèi)路徑需寫絕對路徑,且建議和程序?qū)嶋H需要的路徑一致(如Label Studio的固定路徑);
\是換行符,僅為命令可讀性,也可將所有參數(shù)寫在一行(無\)。
二、貼合你的需求:Label Studio 掛載兩個本地目錄實操示例
結(jié)合你一直操作的Label Studio容器,以「本地mydata/db掛載到容器數(shù)據(jù)庫目錄、本地mydata/annotations掛載到容器標(biāo)注數(shù)據(jù)目錄」為例(按需自定義本地/容器路徑),搭配后臺運行、端口映射、容器命名等常用參數(shù),命令可直接復(fù)制執(zhí)行:
# 推薦:換行寫法(可讀性高,易修改) docker run -d -p 8080:8080 --name label-studio \ -v $(pwd)/mydata/db:/label-studio \ # 本地數(shù)據(jù)庫目錄 → 容器數(shù)據(jù)庫根目錄(含label_studio.sqlite3) -v $(pwd)/mydata/annotations:/label-studio/data \ # 本地標(biāo)注目錄 → 容器標(biāo)注數(shù)據(jù)目錄 heartexlabs/label-studio:latest # 簡潔:單行寫法(無換行符,直接執(zhí)行) docker run -d -p 8080:8080 --name label-studio -v $(pwd)/mydata/db:/label-studio -v $(pwd)/mydata/annotations:/label-studio/data heartexlabs/label-studio:latest
該命令實現(xiàn):
- 本地
當(dāng)前目錄/mydata/db→ 容器/label-studio(存放數(shù)據(jù)庫文件label_studio.sqlite3); - 本地
當(dāng)前目錄/mydata/annotations→ 容器/label-studio/data(存放標(biāo)注項目、數(shù)據(jù)集、標(biāo)注記錄); - 兩個目錄的數(shù)據(jù)各自獨立持久化,容器內(nèi)修改會實時同步到本地對應(yīng)目錄。
三、通用場景示例(非Label Studio,快速參考)
若為普通鏡像,需掛載本地/opt/logs(日志)和/opt/config(配置)到容器/app/logs和/app/config,命令如下:
docker run -d --name my-app \ -v /opt/logs:/app/logs \ # 本地絕對路徑1 → 容器路徑1 -v /opt/config:/app/config \ # 本地絕對路徑2 → 容器路徑2 my-image:latest
四、掛載兩個目錄的關(guān)鍵注意事項(避坑)
1.本地目錄自動創(chuàng)建:若本地指定的目錄不存在(如$(pwd)/mydata/db),Docker會自動創(chuàng)建該目錄,但可能導(dǎo)致權(quán)限問題,建議提前手動創(chuàng)建并賦權(quán):
mkdir -p $(pwd)/mydata/db $(pwd)/mydata/annotations && chmod -R 777 $(pwd)/mydata
2.路徑分隔符:Linux系統(tǒng)中本地和容器路徑均使用正斜杠 /,切勿用反斜杠 \;
3.容器內(nèi)路徑唯一性:兩個掛載的容器內(nèi)路徑不能重復(fù),否則會相互覆蓋,導(dǎo)致數(shù)據(jù)異常;
4.相對路徑必帶 $(pwd):本地相對路徑需以$(pwd)/開頭(代表當(dāng)前目錄),直接寫mydata/db會識別失敗;
5.支持混合掛載:-v 可同時混合掛載目錄和單個文件(如同時掛載目錄+數(shù)據(jù)庫文件),規(guī)則不變:
# 示例:掛載目錄+單個文件(Label Studio場景) docker run -d -p 8080:8080 --name label-studio \ -v $(pwd)/mydata/annotations:/label-studio/data \ # 掛載目錄 -v $(pwd)/mydata/label_studio.sqlite3:/label-studio/label_studio.sqlite3 \ # 掛載單個文件 heartexlabs/label-studio:latest
五、驗證掛載是否成功(快速檢查)
容器啟動后,執(zhí)行以下命令查看容器內(nèi)的掛載關(guān)系,確認(rèn)兩個本地目錄均已成功映射:
# 查看容器的掛載詳情(替換為你的容器名/ID) docker inspect label-studio | grep -A 10 "Mounts"
正常輸出示例(包含兩個掛載記錄):
"Mounts": [
{
"Type": "bind",
"Source": "/root/mydata/db", # 本地實際路徑
"Destination": "/label-studio", # 容器內(nèi)路徑
"Mode": "",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/root/mydata/annotations", # 本地實際路徑
"Destination": "/label-studio/data", # 容器內(nèi)路徑
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
輸出中能看到兩個Source(本地)和Destination(容器)的對應(yīng)關(guān)系,即表示掛載成功。
核心總結(jié)
多目錄掛載核心:多次使用 -v 參數(shù),一個-v對應(yīng)一組本地-容器路徑映射;
標(biāo)準(zhǔn)格式:-v 本地路徑:容器路徑 -v 本地路徑2:容器路徑2,換行/單行均可;
Label Studio適配:結(jié)合容器固定路徑/label-studio(數(shù)據(jù)庫)和/label-studio/data(標(biāo)注數(shù)據(jù))掛載,數(shù)據(jù)可持久化;
避坑關(guān)鍵:本地路徑用$(pwd)/相對路徑或絕對路徑,容器內(nèi)路徑不重復(fù),提前創(chuàng)建本地目錄并賦權(quán)。
到此這篇關(guān)于Docker run命令掛載本地兩個目錄到容器內(nèi)的詳細(xì)教學(xué)的文章就介紹到這了,更多相關(guān)Docker run掛載本地兩個目錄到容器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker快速搭建私有鏡像倉庫registry以及registryUI方式
本文詳細(xì)介紹了如何在Windows系統(tǒng)上使用Docker搭建私有鏡像倉庫,并通過registry-web界面進行管理,內(nèi)容包括環(huán)境準(zhǔn)備、搭建步驟及上傳和下載鏡像的操作2024-12-12
gitlab實踐教程使用git config進行相關(guān)的配置操作
今天小編就為大家分享一篇關(guān)于gitlab實踐教程使用git config進行相關(guān)的配置操作,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12
docker容器間進行數(shù)據(jù)共享的三種實現(xiàn)方式
本文主要介紹了docker容器間進行數(shù)據(jù)共享的三種實現(xiàn)方式,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05
詳解Docker中VLAN網(wǎng)絡(luò)模式的配置
在Docker應(yīng)用到生產(chǎn)環(huán)境的時候包括了原生Bridge NAT模式、LinuxBridge VLAN模式以及利用第三方的網(wǎng)絡(luò)方案這三種,這篇文章給大家詳細(xì)介紹了Docker中VLAN網(wǎng)絡(luò)模式的配置,有需要的朋友們下面來一起看看吧。2016-10-10
解決Docker中的error during connect異常情況
這篇文章主要介紹了解決Docker中的error during connect異常情況,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11
docker部署Macvlan實現(xiàn)跨主機網(wǎng)絡(luò)通信的實現(xiàn)
這篇文章主要介紹了docker部署Macvlan實現(xiàn)跨主機網(wǎng)絡(luò)通信的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
Docker部署用Python編寫的Web應(yīng)用的實踐
本文主要介紹了Docker部署用Python編寫的Web應(yīng)用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09

