目 录CONTENT

文章目录

docker compose volumes

Jinty
2024-01-09 / 0 评论 / 0 点赞 / 408 阅读 / 3328 字

docker compose 配置卷映射方式

docker compose里两种方式配置卷映射进行数据持久化

宿主机路径:容器路径

version: '3'
services:
  solr:
    image: solr
    ports:
     - "8983:8983"
    volumes:
      - /opt/solr/data:/var/solr

优点:直观清晰

缺点:需要管理本地路径(本地路径需要存在);可以直接删除存在一定的风险

卷标

示例1:

services:
  backend:
    image: example/database
    volumes:
      - db-data:/etc/data

  backup:
    image: backup-service
    volumes:
      - db-data:/var/lib/backup/data

volumes:
  db-data:

示例2:

services:
  backend:
    image: example/database
    volumes:
      - db-data:/etc/data

  backup:
    image: backup-service
    volumes:
      - db-data:/var/lib/backup/data

volumes:
  db-data:
    driver: local
    driver_opts:
      type: "nfs"
      o: "addr=10.40.0.199,nolock,soft,rw"
      #这里也可以直接指定本地路径 这种使用docker volume rm 来删除也仅能删除卷无法删除本地路径
      device: /docker/db-data

优点:可以通过docker volume 进行管理

下面说明如何查看docker卷标具体挂载在那个位置以及删除

# 列出所有卷标 并过滤出包含solr名称的
[root@VM-8-14-centos logs]# docker volume ls | grep solr
local     solr_data
# 检查指定卷标名称的信息 
[root@VM-8-14-centos logs]# docker volume inspect solr_data
[
    {
        "CreatedAt": "2024-01-09T16:40:58+08:00",
        "Driver": "local",
        "Labels": {
            "com.docker.compose.project": "solr",
            "com.docker.compose.version": "2.21.0",
            "com.docker.compose.volume": "data"
        },
        "Mountpoint": "/var/lib/docker/volumes/solr_data/_data",
        "Name": "solr_data",
        "Options": null,
        "Scope": "local"
    }
]
# 可以看到挂载点为/var/lib/docker/volumes/solr_data/_data

# 删除本地指定卷标 无法删除正在使用的
[root@VM-8-14-centos logs]# docker volume rm solr_data
Error response from daemon: remove solr_data: volume is in use - [eadc2932f95109bf59d99b2559c127279f60b51cef01df5b72047814642237f7]
[root@VM-8-14-centos logs]# docker volume rm solr_data

[root@VM-8-14-centos logs]# docker inspect eadc2932f95109bf59d99b2559c127279f60b51cef01df5b72047814642237f7


[root@VM-8-14-centos logs]# docker compose down


# 列出所有无效的卷标
docker volume ls -qf dangling=true

# 删除无效的卷
docker volume rm $(docker volume ls -qf dangling=true)

# docker volume prune 同上

参考资料

  1. 卷顶级元素 |Docker 文档 --- Volumes top-level element | Docker Docs

0

评论区