当docker compose down时如何删除未命名的卷?

cod*_*iac 6 docker docker-compose

我有一个 docker-compose 文件,它描述了多项服务。所有服务都附加有卷,但只有一项服务具有指定的卷。当我运行时,docker compose down我想自动删除未命名的卷,同时创建所有丢失的卷。

services:
  service1:
    image: some/image:1
    volumes:
      - named-volume:/home/user1

  service2: 
    image:  some/image:2
    #volumes: not declared volumes that are named automatically with a hash

volumes:
  named-volume:
    name: volume-for-service1
Run Code Online (Sandbox Code Playgroud)

第一次运行时docker compose up,我希望自动创建所有卷(命名和未命名),并且当我运行时,docker compose down我希望删除未命名的卷,同时volume-for-service1保留命名的卷 ( )。下次运行时docker compose up,它应该只创建未命名的卷,因为命名的卷已经存在。

我努力了:

  • docker compose down -v没有删除任何体积
  • docker compose down --remove-orphans没有删除任何体积
  • docker compose down --rmi local没有删除任何体积
  • docker-compose down -v删除了指定的卷
  • docker-compose down --remove-orphans没有删除任何体积
  • docker-compose down --rmi local没有删除任何体积

操作系统:Windows 10 x64

我不太明白。我应该运行什么命令才能达到预期的结果?

raj*_*air 2

尝试--renew-anon-volumes在启动服务时使用标志并--volumes在关闭服务时使用

> docker-compose --renew-anon-volumes up
> docker-compose --volumes down
Run Code Online (Sandbox Code Playgroud)

请参阅 docker compose 文档

 -V, --renew-anon-volumes   Recreate anonymous volumes instead of retrieving
                            data from the previous containers.
Run Code Online (Sandbox Code Playgroud)
    -v, --volumes           Remove named volumes declared in the `volumes`
                            section of the Compose file and anonymous volumes
                            attached to containers.
Run Code Online (Sandbox Code Playgroud)

https://docs.docker.com/compose/reference/down/

  • 执行 `docker-compose --volumes down` 也会删除指定的卷! (2认同)
  • 这不是OP想要的;“我希望删除未命名的卷,同时保留命名的卷 (volume-for-service1)” - 这不会保留命名的卷 (2认同)