在 CentOS 上使用 Docker 挂载目录,通常使用的是 bind mount(绑定挂载) 或 volume(数据卷)。下面按常见场景给你说明。
docker run -d \
-v /data:/data \
--name my_container \
centos
说明:
/data(左边):CentOS 宿主机目录/data(右边):容器内的目录/data 不存在,Docker 会自动创建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 create mydata
docker run -d \
-v mydata:/data \
centos
查看 volume:
docker volume ls
docker volume inspect mydata
version: "3"
services:
app:
image: centos
volumes:
- /data:/data
或 volume:
volumes:
- mydata:/data
CentOS 默认开启 SELinux,可能导致容器无法访问目录。
解决方法之一:
docker run -d \
-v /data:/data:z \
centos
z:共享 SELinux 标签Z:私有标签(不推荐混用)或临时关闭 SELinux(不推荐生产):
setenforce 0
如果容器是普通用户运行:
chmod -R 777 /data
或指定用户:
docker run -u 1000:1000 -v /data:/data centos
docker exec -it my_container ls /data
如果你能告诉我:
我可以给你更精确的命令示例。