You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu系统下Docker挂载目录被拒绝问题求助

Ubuntu系统下Docker挂载目录被拒绝问题求助

各位前辈好,我最近在Ubuntu 20.04上折腾Django项目的Docker部署,用docker-compose up -d --build命令构建镜像的时候,突然碰到了挂载目录被拒绝的问题,卡在这里好久了,想请教下大家怎么解决。

先说说我的情况:已经写好了Dockerfile和docker-compose.yml,postgres容器能正常启动,但app容器启动时直接报错,错误信息如下:

✔ Container postgres Started
⠙ Container app Starting
Error response from daemon: Mounts denied:
The path /media/shokouh/51eb51ef-6583-499a-81b4-5f3f2e6acac2/codes/SmartFactorySystem is not shared from the host and is not known to Docker.

这个路径是我外接硬盘里的项目目录,我猜是不是Docker没有权限访问外部存储的目录?有没有大佬能指点下具体的解决步骤呀?

我自己试了一些方法但没成功,也列出来给大家参考:

  • 检查了目录权限,给了755权限,但还是不行
  • 重启过Docker服务,没效果

可能的解决方案(整理自社区经验):

  • 配置Docker允许访问该目录:
    编辑Docker的守护进程配置文件/etc/docker/daemon.json(如果文件不存在就新建一个),添加允许的路径:

    {
      "allowed-rofs": ["/media/shokouh/51eb51ef-6583-499a-81b4-5f3f2e6acac2/codes/SmartFactorySystem"]
    }
    

    保存后重启Docker服务:sudo systemctl restart docker,然后重新运行构建命令试试。

  • 修改外接存储的挂载权限:
    如果你是通过fstab挂载的外接硬盘,可以在挂载参数里加上用户权限,比如:

    /dev/sdX1 /media/shokouh/51eb51ef-6583-499a-81b4-5f3f2e6acac2 ext4 defaults,uid=1000,gid=1000 0 2
    

    这里的uid和gid可以用id命令查看你当前用户的ID,修改后重新挂载:sudo mount -a,再尝试构建。

  • 检查docker-compose的volumes配置:
    确认你的docker-compose.yml里的volumes路径是正确的绝对路径,没有拼写错误,比如:

    services:
      app:
        build: .
        volumes:
          - /media/shokouh/51eb51ef-6583-499a-81b4-5f3f2e6acac2/codes/SmartFactorySystem:/app
        # 其他配置...
    
  • 临时用特权模式排查:
    要是上面的方法都不行,可以先在docker-compose.yml的app服务里加上privileged: true,看看能不能启动,这能帮你判断是不是权限问题:

    services:
      app:
        privileged: true
        # 其他配置...
    

    不过这个方法不推荐长期使用,毕竟特权模式会给容器太高的权限,有安全风险。

希望这些方法能帮到我,也欢迎各位大佬补充其他解决方案!

备注:内容来源于stack exchange,提问作者Shokouh Dareshiri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 09:32:59