Docker run命令挂载本地两个目录到容器内的详细教学

 更新时间:2026年01月26日 09:38:49   作者:大帅说AI  
这篇文章主要为大家详细介绍了Docker run命令挂载本地两个目录到容器内的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起

docker run 挂载多个本地目录/文件到容器内的核心规则是:多次使用 -v 参数,每个 -v 对应一组「本地路径:容器内路径」的映射关系,参数顺序无要求,可根据需求任意排列,适配所有Docker镜像(含你的Label Studio)。

一、通用标准写法(核心格式)

docker run [其他参数(-d/-p/--name等)] \
  -v 本地目录1的路径:容器内目标目录1的路径 \
  -v 本地目录2的路径:容器内目标目录2的路径 \
  镜像名:标签

关键说明:

  • 每个 -v 独立配置一个挂载关系,无数量限制(可挂载2个、3个及以上);
  • 本地路径支持相对路径$(pwd)/xxx,推荐,代表当前终端目录下的xxx)和绝对路径/root/xxx);
  • 容器内路径需写绝对路径,且建议和程序实际需要的路径一致(如Label Studio的固定路径);
  • \ 是换行符,仅为命令可读性,也可将所有参数写在一行(无\)。

二、贴合你的需求:Label Studio 挂载两个本地目录实操示例

结合你一直操作的Label Studio容器,以「本地mydata/db挂载到容器数据库目录、本地mydata/annotations挂载到容器标注数据目录」为例(按需自定义本地/容器路径),搭配后台运行、端口映射、容器命名等常用参数,命令可直接复制执行

# 推荐:换行写法(可读性高,易修改)
docker run -d -p 8080:8080 --name label-studio \
  -v $(pwd)/mydata/db:/label-studio  \ # 本地数据库目录 → 容器数据库根目录(含label_studio.sqlite3)
  -v $(pwd)/mydata/annotations:/label-studio/data \ # 本地标注目录 → 容器标注数据目录
  heartexlabs/label-studio:latest

# 简洁:单行写法(无换行符,直接执行)
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

该命令实现:

  • 本地当前目录/mydata/db → 容器/label-studio(存放数据库文件label_studio.sqlite3);
  • 本地当前目录/mydata/annotations → 容器/label-studio/data(存放标注项目、数据集、标注记录);
  • 两个目录的数据各自独立持久化,容器内修改会实时同步到本地对应目录。

三、通用场景示例(非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

四、挂载两个目录的关键注意事项(避坑)

1.本地目录自动创建:若本地指定的目录不存在(如$(pwd)/mydata/db),Docker会自动创建该目录,但可能导致权限问题,建议提前手动创建并赋权:

mkdir -p $(pwd)/mydata/db $(pwd)/mydata/annotations && chmod -R 777 $(pwd)/mydata

2.路径分隔符:Linux系统中本地和容器路径均使用正斜杠 /,切勿用反斜杠 \

3.容器内路径唯一性:两个挂载的容器内路径不能重复,否则会相互覆盖,导致数据异常;

4.相对路径必带 $(pwd):本地相对路径需以$(pwd)/开头(代表当前目录),直接写mydata/db会识别失败;

5.支持混合挂载-v 可同时混合挂载目录单个文件(如同时挂载目录+数据库文件),规则不变:

# 示例:挂载目录+单个文件(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

五、验证挂载是否成功(快速检查)

容器启动后,执行以下命令查看容器内的挂载关系,确认两个本地目录均已成功映射:

# 查看容器的挂载详情(替换为你的容器名/ID)
docker inspect label-studio | grep -A 10 "Mounts"

正常输出示例(包含两个挂载记录):

"Mounts": [
    {
        "Type": "bind",
        "Source": "/root/mydata/db", # 本地实际路径
        "Destination": "/label-studio", # 容器内路径
        "Mode": "",
        "RW": true,
        "Propagation": "rprivate"
    },
    {
        "Type": "bind",
        "Source": "/root/mydata/annotations", # 本地实际路径
        "Destination": "/label-studio/data", # 容器内路径
        "Mode": "",
        "RW": true,
        "Propagation": "rprivate"
    }
],

输出中能看到两个Source(本地)和Destination(容器)的对应关系,即表示挂载成功。

核心总结

多目录挂载核心:多次使用 -v 参数,一个-v对应一组本地-容器路径映射;

标准格式:-v 本地路径:容器路径 -v 本地路径2:容器路径2,换行/单行均可;

Label Studio适配:结合容器固定路径/label-studio(数据库)和/label-studio/data(标注数据)挂载,数据可持久化;

避坑关键:本地路径用$(pwd)/相对路径或绝对路径,容器内路径不重复,提前创建本地目录并赋权。

到此这篇关于Docker run命令挂载本地两个目录到容器内的详细教学的文章就介绍到这了,更多相关Docker run挂载本地两个目录到容器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker快速搭建私有镜像仓库registry以及registryUI方式

    docker快速搭建私有镜像仓库registry以及registryUI方式

    本文详细介绍了如何在Windows系统上使用Docker搭建私有镜像仓库,并通过registry-web界面进行管理,内容包括环境准备、搭建步骤及上传和下载镜像的操作
    2024-12-12
  • gitlab实践教程使用git config进行相关的配置操作

    gitlab实践教程使用git config进行相关的配置操作

    今天小编就为大家分享一篇关于gitlab实践教程使用git config进行相关的配置操作,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • Docker ps命令详解

    Docker ps命令详解

    Docker ps是用于查看Docker服务器中容器状态(运行/暂停/停止),及批量获取容器基本信息最常用的指令,ps命令具有很多可用的参数,本文给大家介绍Docker ps命令,感兴趣的朋友一起看看吧
    2023-11-11
  • docker容器间进行数据共享的三种实现方式

    docker容器间进行数据共享的三种实现方式

    本文主要介绍了docker容器间进行数据共享的三种实现方式,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • 详解Docker中VLAN网络模式的配置

    详解Docker中VLAN网络模式的配置

    在Docker应用到生产环境的时候包括了原生Bridge NAT模式、LinuxBridge VLAN模式以及利用第三方的网络方案这三种,这篇文章给大家详细介绍了Docker中VLAN网络模式的配置,有需要的朋友们下面来一起看看吧。
    2016-10-10
  • 解决Docker中的error during connect异常情况

    解决Docker中的error during connect异常情况

    这篇文章主要介绍了解决Docker中的error during connect异常情况,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • docker部署Macvlan实现跨主机网络通信的实现

    docker部署Macvlan实现跨主机网络通信的实现

    这篇文章主要介绍了docker部署Macvlan实现跨主机网络通信的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • docker网段冲突如何解决

    docker网段冲突如何解决

    这篇文章主要为大家介绍了docker网段冲突的解决方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪<BR>
    2023-05-05
  • docker中安装elasticsarch 等镜像的过程

    docker中安装elasticsarch 等镜像的过程

    这篇文章主要介绍了docker中安装elasticsarch 等镜像,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • Docker部署用Python编写的Web应用的实践

    Docker部署用Python编写的Web应用的实践

    本文主要介绍了Docker部署用Python编写的Web应用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09

最新评论