Docker中Volume使用说明
Volumes(卷)是 Docker Compose 中非常重要的概念,用于持久化数据和在容器间共享数据。下面是 Docker Compose 中 volumes 配置的详细说明和示例。
Volumes 基本语法
在 docker-compose.yml 文件中,volumes 可以在两个级别定义:
- 顶级 volumes:定义可被多个服务使用的命名卷
- 服务级 volumes:定义特定服务的挂载点
顶级 Volumes 配置
version: "3.9"
volumes:
my_data: # 使用默认驱动和选项的命名卷
db_data:
driver: local # 指定卷驱动
driver_opts: # 驱动特定选项
type: none
device: /path/on/host
o: bind
cached_data:
external: true # 使用外部已创建的卷
backup_data:
name: "backup-$(date +%Y%m%d)" # 动态命名(在创建时展开)
服务级 Volumes 配置
在服务定义中使用 volumes 有多种语 法:
短语法
services:
web:
image: nginx
volumes:
- my_data:/usr/share/nginx/html # 命名卷
- ./config:/etc/nginx/conf.d # 绑定挂载(相对路径)
- /var/log/nginx:/var/log/nginx # 绑定挂载(绝对路径)
- /etc/nginx/nginx.conf:/etc/nginx/nginx.conf:ro # 只读挂载
- cache:/tmp/cache # 命名卷
- /tmp # 匿名卷
长语法
services:
web:
image: nginx
volumes:
- type: volume
source: my_data
target: /usr/share/nginx/html
volume:
nocopy: true # 不从容器复制数据到卷
- type: bind
source: ./config
target: /etc/nginx/conf.d
- type: tmpfs
target: /tmp
tmpfs:
size: 100M # 限制 tmpfs 大小
- type: bind
source: ./nginx.conf
target: /etc/nginx/nginx.conf
read_only: true # 只读模式