命名卷的docker-compose.yml语法

时间:2018-10-15 10:37:15

标签: docker docker-compose docker-volume

用于指定命名卷的主机路径的docker-compose.yml语法是什么?

docker-compose.yml:

volumes:
  myvolume:  # how do I specify path here?
  othervolume:

services: # etc...

我已经检查过docs,但找不到。老实说,我不知道有人怎么使用这些东西。

2 个答案:

答案 0 :(得分:5)

使用组合卷的常见情况是使用默认的命名卷,该默认卷映射到本地卷驱动程序,并将卷放置在/ var / lib / docker / volumes中。不是您要找的东西,但这对许多人来说是简单的选择:

clientHeight

映射主机卷的常用方法是直接指定路径,无需在卷上指定名称。同样,这不是您要的,但是很容易实现。这是一个隐藏式装订:

version: '3'
volumes:
  myvolume:
  othervolume:    
services:
  myservice:
    volumes:
      - myvolume:/volume/path

如果要将命名卷和主机卷放在一起,则要查找的是配置为使用绑定安装的命名卷。如果目录不存在,这样做的缺点是失败,但另一方面,docker可以将一个空目录初始化为映像的内容。

version: '3'
services:
  myservice:
    volumes:
      - ./path:/volume/path

请注意,绑定装载的缺点是它将文件(由容器管理)与容器中的uid / gid一起放置在主机上其他用户可能使用的路径内,并且通常使用其他uid / gid主人。结果是主机上或容器内的权限问题。您需要在两者之间对齐uid / gid来避免这种情况。

答案 1 :(得分:0)

在同一参考文档中,您可以检查示例docker-compose.yml的完整扩展版本

https://docs.docker.com/compose/compose-file/#compose-file-structure-and-examples

有关命名卷安装,请参见“数据库”部分。

  db:
    image: postgres:9.4
    volumes:
      - db-data:/var/lib/postgresql/data
    networks:
      - backend
    deploy:
      placement:
        constraints: [node.role == manager]