Skip to content

Docker 数据卷(Volume)

持久化容器数据,避免容器删除后数据丢失。

两种常见挂载

方式Compose 写法特点
named volumemydata:/var/lib/mysqlDocker 管理,适合数据库等持久数据
bind mount./conf:/etc/mysql/conf.d:ro直接挂宿主机目录,适合配置、源码热更新

Docker Compose

yaml
services:
  mysql:
    image: mysql:8.4
    volumes:
      - mydata:/var/lib/mysql
      - ./conf:/etc/mysql/conf.d:ro

volumes:
  mydata:
  • 格式为 source:target[:access_mode]
  • source:命名卷名称,或宿主机文件、目录路径。
  • target:容器内的挂载路径。
  • ro:只读挂载;未指定时默认为可读写。
  • named volume 需要在顶层 volumes 中声明。mydata: 是命名卷声明,不是路径映射,配置为空时使用 Docker 默认设置。
  • bind mount 不需要在顶层 volumes 中声明。

volume 命令

bash
docker volume ls
docker volume inspect mydata
docker volume rm mydata
docker volume prune -f

prune 只删未被容器使用的卷,删前先确认。

基于 MIT 许可发布