在 Ubuntu 上使用 Docker 挂载目录,通常有两种方式:bind mount(绑定挂载) 和 volume(数据卷)。下面分别说明,并给出常见示例。
适合:开发环境、需要直接修改宿主机文件
docker run -d \
-v /宿主机/路径:/容器/路径 \
--name mycontainer \
镜像名
docker run -d \
-v /home/user/data:/app/data \
--name nginx-test \
nginx
说明:
/home/user/data:Ubuntu 上的真实目录(不存在会自动创建)/app/data:容器内的目录rw)-v /home/user/data:/app/data:ro
适合:数据库、持久化数据
docker volume create mydata
docker run -d \
-v mydata:/app/data \
--name mysql-test \
mysql
查看 volume 位置:
docker volume inspect mydata
version: "3"
services:
app:
image: nginx
volumes:
- ./data:/usr/share/nginx/html
version: "3"
services:
db:
image: mysql
volumes:
- dbdata:/var/lib/mysql
volumes:
dbdata:
chmod -R 777 /home/user/data
或指定用户:
docker run -u 1000:1000 ...
Ubuntu 默认不启用 SELinux,可忽略。
docker inspect 容器名 | grep Mounts -A 20
如果你有具体场景(比如 Nginx / MySQL / Python 项目 / 深度学习),我可以给你更精确的挂载示例。