温馨提示×

centos docker如何挂载目录

小樊
54
2026-09-05 22:19:24
栏目: 智能运维

CentOS 上使用 Docker 挂载目录,通常是指把 宿主机(CentOS)上的目录 挂载到 容器内部,实现数据共享和持久化。下面按常见场景说明。


一、最常用方式:-v(volume 挂载)

1️⃣ 挂载宿主机目录到容器

docker run -d \
  -v /data:/data \
  --name mycontainer \
  nginx

说明:

  • /data(宿主机路径)
  • /data(容器路径)
  • 容器中对 /data 的修改会同步到宿主机

⚠️ 注意:

  • 宿主机目录必须存在,否则 Docker 会当成 volume 名称
  • 推荐使用绝对路径

2️⃣ 指定读写权限

docker run -d -v /data:/data:ro nginx
  • ro:只读(容器不能写)
  • rw(默认):读写

二、使用 --mount(推荐,更清晰)

docker run -d \
  --mount type=bind,source=/data,target=/data \
  --name mycontainer \
  nginx

可选参数:

--mount type=bind,source=/data,target=/data,readonly

✅ 优点:

  • 参数更明确
  • 不易写错
  • 官方推荐

三、CentOS 常见注意事项

1️⃣ SELinux 导致无法访问

CentOS 默认开启 SELinux,可能出现:

  • 容器无法读写目录
  • 权限被拒绝

解决方式一(加 zZ

docker run -d -v /data:/data:z nginx

说明:

  • z:共享 SELinux 标签(常用)
  • Z:私有标签(不推荐多容器)

解决方式二(临时关闭 SELinux 测试)

setenforce 0

⚠️ 仅用于测试,不建议生产环境


2️⃣ 目录权限问题

确保目录权限正确:

chmod 755 /data
chown 1000:1000 /data   # 视容器用户而定

四、Docker Compose 挂载目录(CentOS 同样适用)

version: "3"
services:
  nginx:
    image: nginx
    volumes:
      - /data:/data

或:

    volumes:
      - type: bind
        source: /data
        target: /data

五、查看挂载情况

docker inspect mycontainer | grep -A 10 Mounts

六、常见错误

❌ 使用相对路径
❌ 宿主机目录不存在
❌ SELinux 未处理
❌ 容器用户无权限


如果你愿意,可以告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • Docker 版本
  • 具体要挂载什么(如 MySQL、Nginx、日志目录)

我可以给你针对性示例

0