代码之家  ›  专栏  ›  技术社区  ›  curiousengineer

从yaml/compose文件将主机目录装载到docker容器

  •  0
  • curiousengineer  · 技术社区  · 7 年前

    mymicroservice:
      image: service_img
      networks: myoverlay
      volumes:
        - /Users/abcdUser/mountme:/opt/company/
    

    /opt/company 当我部署docker swarm服务堆栈时。

    但是,我想在单独的 volumes:

    因此,我想做以下几点,但无法做到:

    mymicroservice:
      image: service_img
      networks: myoverlay
      volumes:
        - myownvolume:/opt/company/
    
    
    volumes:
     - myownvolume: /Users/abcdUser/mountme
    

    myownvolume 这里只是指向目录 /Users/abcdUser/mountme

    2 回复  |  直到 7 年前
        1
  •  2
  •   Tarun Lalwani    7 年前

    可以这样做,但不能使用标准设置。默认的卷驱动程序不允许您正在寻找的格式。您需要使用需要外部安装的docker插件。考虑以下yaml

    version: '2'
    
    services:
      one:
        image: alpine
        working_dir: /one/
        command: sleep 600
        volumes:
          - data:/one/
    
      two:
        image: alpine
        working_dir: /two/
        command: sleep 600
        volumes:
          - data:/two/
    
    volumes:
      data:
        driver: local-persist
        driver_opts:
          mountpoint: /data/local-persist/data
    

    当您安装了本地persist插件时,上述功能就可以工作了。 https://github.com/CWSpear/local-persist

    https://docs.docker.com/engine/extend/legacy_plugins/#volume-plugins

    此外,如果卷条目的重复对您来说是一个问题,那么您可以在YAML中使用锚定

    version: '3'
    
    services:
      alpines:
        image: alpine
        command: sleep 200
        volumes: &common_volumes
          - ./data:/data
          - ./config:/config
      alpine2:
        image: alpine
        command: sleep 200
        volumes: *common_volumes
    
    $ docker-compose config
    services:
      alpine2:
        command: sleep 200
        image: alpine
        volumes:
        - /home/vagrant/so/volumes2/data:/data:rw
        - /home/vagrant/so/volumes2/config:/config:rw
      alpines:
        command: sleep 200
        image: alpine
        volumes:
        - /home/vagrant/so/volumes2/data:/data:rw
        - /home/vagrant/so/volumes2/config:/config:rw
    version: '3.0'
    
        2
  •  1
  •   gesellix    7 年前

    这是不可能的。您必须使用绑定装载语法或卷语法。组合配置顶层的卷不允许将两者混合使用。看见 how to define a general mount point in docker compose