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

Docker-in-Docker挂载宿主机卷无内容问题排查与解决

问题

通过挂载宿主机docker.sock实现Docker-in-Docker(DinD),使用的docker-compose.yml配置如下:

services:
  dw-app:
    build: .
    ports:
      - "127.0.0.1:8500:8500"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./uploads:/app/uploads
      - ./db:/app/db
      - ./flask-logging.log:/app/flask-logging.log
      - ./gunicorn-logging.log:/app/gunicorn-logging.log
      - ./flask-config.cfg:/app/flask-config.cfg
    environment:
      - UPLOAD_PATH=/mnt/c/Users/<user>/OneDrive/Dokumente/<company>/docker-workflow-web-app
      #- UPLOAD_PATH=/app
      - FLASK_CFG_PATH=/app/flask-config.cfg
    stdin_open: true
    tty: true

程序中执行的Python代码:

HOST_UPLOAD_DIR = os.path.join(os.environ.get('UPLOAD_PATH'), dir_path)

print(HOST_UPLOAD_DIR)


if not zotero_used:
    docker_command = ["docker", "run","--rm", "--volume", f"{HOST_UPLOAD_DIR}:/app/files", "d2md-debug", doc_file_name]
    result = subprocess.run(docker_command)

问题现象:d2md-debug容器能正常创建,但挂载的HOST_UPLOAD_DIR目录为空,文件无法找到。宿主机直接执行相同命令可正常运行,已将目录权限设为777,且该目录可通过容器挂载正常读写,更换其他路径(如/home/<user>/uploads)也无效,此前该方案可正常使用。

解决方案

2024年5月更新

Docker Desktop 4.30.+版本已修复此问题,无需再使用此前的解决方法,官方补丁说明如下:

Fixed a regression in Docker Desktop 4.28 that caused host files bind-mounted into containers to not show up properly inside the container, when using Docker-in-Docker (via mounts of /var/run/docker.sock) on WSL.

此前解决方法

采用DavidMaze的建议,将路径改为/c/Users/...替代/mnt/c/User/..(适用于Windows版Docker Desktop)。


内容的提问来源于stack exchange,提问作者Thomas J.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 16:53:30