在Ubuntu服务器上部署Label Studio
一、拉取镜像
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