温馨提示×

centos docker怎么挂载目录

小樊
55
2026-09-11 17:15:01
栏目: 智能运维

在 CentOS 上使用 Docker 挂载目录,通常使用的是 bind mount(绑定挂载) 或 volume(数据卷)。下面按常见场景给你说明。


一、启动容器时挂载目录(最常用)

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

docker run -d \
  -v /data:/data \
  --name my_container \
  centos

说明:

  • /data(左边):CentOS 宿主机目录
  • /data(右边):容器内的目录
  • 如果宿主机 /data 不存在,Docker 会自动创建

2️⃣ 指定只读挂载

docker run -d \
  -v /data:/data:ro \
  centos

ro = read only,容器内不能写


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

docker run -d \
  --mount type=bind,source=/data,target=/data \
  centos

只读:

docker run -d \
  --mount type=bind,source=/data,target=/data,readonly \
  centos

三、使用 Docker Volume(推荐用于数据持久化)

1️⃣ 创建 volume

docker volume create mydata

2️⃣ 使用 volume

docker run -d \
  -v mydata:/data \
  centos

查看 volume:

docker volume ls
docker volume inspect mydata

四、docker-compose 中挂载目录(CentOS 同样适用)

version: "3"
services:
  app:
    image: centos
    volumes:
      - /data:/data

或 volume:

volumes:
  - mydata:/data

五、CentOS 常见注意事项

1️⃣ SELinux 问题(非常重要)

CentOS 默认开启 SELinux,可能导致容器无法访问目录。

解决方法之一:

docker run -d \
  -v /data:/data:z \
  centos
  • z:共享 SELinux 标签
  • Z:私有标签(不推荐混用)

或临时关闭 SELinux(不推荐生产):

setenforce 0

2️⃣ 权限问题

如果容器是普通用户运行:

chmod -R 777 /data

或指定用户:

docker run -u 1000:1000 -v /data:/data centos

六、查看挂载是否成功

docker exec -it my_container ls /data

如果你能告诉我:

  • 是 宿主机 → 容器
  • 还是 容器 → 容器
  • 是否用 docker-compose
  • 挂载目录用途(配置 / 数据 / 日志)

我可以给你更精确的命令示例。

0 踩