一、拉取鏡像
docker pull heartexlabs/label-studio:latest
二、啟動容器
(回到用戶目錄,例:輸入pwd,顯示 /home/<user>)
docker run -d --name label-studio -it -p 8081:8080 -v $(pwd)/mydata:/label-studio/data heartexlabs/label-studio:latest
# 訪問網址
http://localhost:8081
三、遇到的問題
1.對用戶目錄沒有操作權限
輸入啟動容器的命令后,出現報錯,無法運行該命令,嘗試在用戶目錄下創建mydata文件夾后,出現新的報錯
# 問題顯示
=> Database and media directory: /label-studio/data
=> Static URL is set to: /static/
Traceback (most recent call last):File "/label-studio/.venv/bin/label-studio", line 3, in <module>from label_studio.server import mainFile "/label-studio/label_studio/server.py", line 23, in <module>from label_studio.core.argparser import parse_input_argsFile "/label-studio/label_studio/core/argparser.py", line 5, in <module>from .settings.base import EXPORT_DIRFile "/label-studio/label_studio/core/settings/base.py", line 461, in <module>os.makedirs(MEDIA_ROOT, exist_ok=True)File "<frozen os>", line 225, in makedirs
PermissionError: [Errno 13] Permission denied: '/label-studio/data/media'
解決:對mydata文件夾設置權限
# 將 mydata 目錄及其子目錄歸屬權改為當前用戶
sudo chown -R $(whoami):$(whoami) ./mydata
2.查看并刪除已停止的容器
# 查看所有容器(包括已停止的)
docker ps -a# 根據容器 ID 或名稱逐個刪除
docker rm container_id_1 container_id_2 container_id_3
3.解析原命令
解析命令:docker run -it -p 8081:8080 -v $(pwd)/mydata:/label-studio/data heartexlabs/label-studio:latest
1. ?基礎命令結構?docker run?:創建并啟動一個新容器的主命令。2. ?參數解析?(1) -it?
作用?:以交互模式運行容器,并分配一個偽終端(pseudo-TTY)。
-i:保持標準輸入(STDIN)打開,允許與容器交互。
-t:分配終端,使命令在交互式環境中運行(如 Shell)。
典型場景?:需直接在容器內執行命令(如調試或操作容器內 Shell)。(2) -p 8081:8080?
作用?:端口映射,將宿主機端口 8081 綁定到容器端口 8080。
訪問宿主機 http://localhost:8081 可連接到容器的 8080 端口服務。
格式說明?:宿主機端口:容器端口,需確保宿主機端口未被占用。(3) -v $(pwd)/mydata:/label-studio/data?
作用?:數據卷掛載,將宿主機目錄 $(pwd)/mydata 掛載到容器的 /label-studio/data 目錄。
$(pwd):當前 Shell 的工作目錄(例如 /home/user),實際掛載路徑為 /home/user/mydata。
容器內對 /label-studio/data 的讀寫會同步到宿主機的 mydata 目錄,實現數據持久化。
注意?:
若宿主機目錄 mydata 不存在,Docker 會默認創建。
路徑需使用絕對路徑或 Shell 變量(如 $(pwd))。(4) heartexlabs/label-studio:latest?
鏡像名稱?:指定從 Docker Hub 拉取的鏡像 heartexlabs/label-studio,標簽為 latest(最新版本)。
若本地無此鏡像,Docker 會自動從倉庫拉取。3. ?完整命令功能總結?通過此命令:創建并啟動?一個基于 heartexlabs/label-studio 鏡像的容器。
交互式運行?容器,用戶可通過終端與容器內進程交互。
端口映射?允許通過宿主機 8081 端口訪問容器內服務。
數據持久化?確保容器內 /label-studio/data 的數據保存到宿主機本地目錄,避免容器刪除后數據丟失。4. ?潛在問題與注意事項?目錄權限?:確保宿主機目錄 mydata 對 Docker 進程有讀寫權限。
端口沖突?:若宿主機 8081 端口被占用,需修改映射端口(如 -p 8082:8080)。
鏡像版本?:標簽 latest 可能隨更新變動,建議生產環境使用固定版本(如 heartexlabs/label-studio:1.0.0)。
四、參考網址
LabelStudio+YOLO實戰:從數據標注到模型訓練完整指南
Label Studio+Yolov5實現目標檢測預標注(一)
HumanSignal/label-studio: Label Studio is a multi-type data labeling and annotation tool with standardized output format