有没有办法使用docker compose标记或命名卷实例?

时间:2016-08-20 18:03:51

标签: docker docker-compose

使用docker compose时,我发现了很多卷实例:

› docker volume ls
DRIVER              VOLUME NAME
local               4a34b9a352a459171137aac4c046a83f61e6e325b1df4b67dc2ddda8439a6427
local               6ce3e52ea363441b2c9d4b04c26b283d8b4cf631a137987da88db812a9a2d223
local               a7af289b29c833510f2201647266001e4746e206128dc63313fe894821fa044d
local               fb09475f75fe943671a4e73d76c09c27a4f592b8ddf62224fc4b20afa0095809

我想标记或命名它们,然后在可能的情况下重复使用它们,而不是每次都重新创建它们。

这可能吗?

1 个答案:

答案 0 :(得分:2)

这些是在定义没有名称的卷或将其绑定到主机文件夹时发生的匿名容器卷。这可能是Dockerfile中的VOLUME定义,docker run -v /dir ...而不是name:/dir,或者是docker-compose.yml中只有目录的卷条目。执行命名安装的撰写文件的示例是:

version: '2'

volumes:
  my-vol:
    driver: local

services: 
  my-container:
    image: my-image
    volumes:
      - my-vol:/container/path

创建匿名卷后,没有简单的方法可以重命名它。最简单的解决方案是将匿名卷与目标命名卷一起安装并执行复制,例如:

docker run -v 123456789:/source -v my-vol:/target --rm \
  busybox cp -av /source/. /target/

其中123456789是匿名卷的长名称。