最常用方式是用 docker run -v 将宿主机目录映射进容器,支持单/多目录挂载、命名卷及跨平台路径写法,windows需配置共享驱动器。
最常用、最直接的方式就是用 docker run -v 命令,把 windows、macos 或 linux 上的本地文件夹,映射进正在启动的容器里。它简单、实时、开发调试时几乎必用。
单个目录挂载(基础写法)
格式固定:docker run -v 本地路径:容器内路径 镜像名
- Windows 注意路径写法:用正斜杠,带盘符,比如
C:/mydata或//c/Users/Name/data - macOS/Linux 可直接用绝对路径,如
/home/user/project - 容器内路径必须是绝对路径,例如
/app、/var/www/html - 如果本地目录不存在,Docker 会自动创建;容器内对应目录原有内容会被“遮蔽”,以挂载内容为准
同时挂载多个目录(很常见)
只需重复使用 -v 参数,每个 -v 独立定义一组映射:
docker run -d \ -p 8080:8080 \ --name my-app \ -v $(pwd)/config:/app/config \ -v $(pwd)/logs:/app/logs \ -v $(pwd)/data:/app/data \ my-image:latest
-
$(pwd)表示当前终端所在目录,推荐用于相对路径,避免硬编码绝对路径 - 顺序无关,可按逻辑分组(比如先配 config,再挂 data)
- 适用于 Label Studio、Nginx、PostgreSQL 等需分离配置、数据、日志的场景
用命名卷管理持久化数据(适合生产)
不直接暴露宿主机路径,由 Docker 统一管理,更安全、跨平台、权限友好:
- 先创建卷:
docker volume create app_data - 启动容器时挂载:
docker run -v app_data:/app/data nginx:alpine - 想初始化数据?用临时容器复制:
docker run --rm -v $(pwd)/init:/src -v app_data:/dst alpine cp -r /src/. /dst/ - 查看卷位置(Linux/macOS):
docker volume inspect app_data;Windows 下不建议手动访问路径
Windows 用户特别注意
如果你用的是 Docker Desktop for Windows:
- 默认只共享 C 盘;若挂载 D:\、E:\ 等其他盘符,必须先在 Docker Desktop 设置中勾选对应驱动器(右键托盘图标 → Settings → Resources → File Sharing)
- 路径含空格或中文?建议用英文路径,或确保整个路径用双引号包裹(部分 Shell 下需要)
- WSL2 后端用户,
//wsl$/路径也可挂载,但日常开发推荐用 Windows 原生路径 + 共享设置











