在 CentOS 上使用 Docker 挂载磁盘(或目录),通常有以下几种常见场景。我先说明概念,再给具体示例。
把 宿主机目录/磁盘 直接挂到容器里
docker run -d \
-v /data:/data \
nginx
说明:
/data:宿主机目录(可以是挂载的磁盘)/data:容器内的目录✅ 适合:数据盘、配置文件、日志
由 Docker 自己管理,不依赖宿主机路径
docker volume create mydata
docker run -d -v mydata:/data nginx
✅ 适合:数据库等需要持久化的数据
lsblk
fdisk -l
例如看到:
/dev/sdb 100G
mkfs.ext4 /dev/sdb
mkdir -p /data
mount /dev/sdb /data
编辑:
vi /etc/fstab
添加:
/dev/sdb /data ext4 defaults 0 0
验证:
mount -a
docker run -d \
-v /data:/data \
--name mynginx nginx
version: "3"
services:
nginx:
image: nginx
volumes:
- /data:/usr/share/nginx/html
CentOS 默认开启 SELinux
解决方式:
docker run -d -v /data:/data:z nginx
或临时关闭:
setenforce 0
后果:
✅ 一定先 df -h 确认
df -h
docker inspect 容器名 | grep Mounts -A 10
如果你愿意,可以告诉我:
我可以直接给你可复制的命令。