目录

docker-compose 简介

用 volumes 管理数据卷的两种姿势

docker-compose 通过 volumes 配置数据卷来实现数据持久化。常见有两种写法。

第一种:本地路径直接挂载(bind mount)

ghost:
  image: ghost
  volumes:
    - ./ghost/config.js:/var/lib/ghost/config.js

第二种:使用命名卷(named volume)

services:
  mysql:
    image: mysql
    container_name: mysql
    volumes:
      - mysql:/var/lib/mysql
# ...
volumes:
  mysql:

第一种方式将宿主机路径直接挂载到容器,比较直观,但需要自己管理本地路径。 第二种使用命名卷,写法更简洁,但数据存在宿主机的某个默认位置,不易一眼看到。下面说明如何查看命名卷的真实位置。

查看所有卷标:

docker volume ls

查看某个 volume 对应的真实地址:

$ docker volume inspect vagrant_mysql
[
  {
    "Name": "vagrant_mysql",
    "Driver": "local",
    "Mountpoint": "/var/lib/docker/volumes/vagrant_mysql/_data"
  }
]

可以看到,命名卷默认存放在宿主机的 /var/lib/docker/volumes/<卷名>/_data 目录下。

相关内容