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

将一个文件或目录直接从容器A卷装到容器B

  •  0
  • Saffik  · 技术社区  · 6 年前

    我想知道是否有办法在同一docker网络中直接将目录从CONTAINER-a(收集器)卷装到CONTAINER-B(存储)?

    docker-compose 文件

    ---
    services:
      collector:
        hostname: "collector"
        container_name: "collector"
      volumes_from:
      - container:store
      store:
        hostname: "store"
        container_name: "store"
    version: "2.1"
    

    我在docker容器(收集器)中有一个目录,其中包含一些文件: /home/collector/data

    我想把它卷装到docker容器store中的某个目录中

    任何方法,以确保我们挂载它的目录,而不复制到其他地方在中间的第一。

    我试过以下方法,但没有效果:

    -卷\u来自

    谢谢你的帮助,谢谢!

    2 回复  |  直到 6 年前
        1
  •  1
  •   boyvinall    6 年前

    ---
    version: "2.1"
    
    volumes:
      foo: {}
    
    services:
    
      collector:
        hostname: "collector"
        container_name: "collector"
        volumes:
        - foo:/path/inside/collector
    
      store:
        hostname: "store"
        container_name: "store"
        volumes:
        - foo:/path/inside/store
    

    docker volume <command> 与卷交互。或者,一个简单的方法就是 docker-compose down -v

        2
  •  1
  •   BMitch    6 年前

    卷复制数据的唯一时间是当它们是从映像初始化的命名卷时。除此之外,卷始终是卷源的直接文件系统装载。卷中的数据不存在于容器或映像中,它只装载在那里。

    要在两个不同的容器中装入相同的卷,建议使用命名卷,并将两个容器指向相同的卷名:

    version: "2.1"
    volumes:
      data:
    services:
      collector:
        image: collector
        volumes:
        - data:/home/collector/data
      store:
        image: store
        volumes:
        - data:/home/collector/data
    

    请注意,命名卷在默认情况下是初始化的,但只初始化一次以卷开头的第一个容器的内容。

    还要注意,由于Linux inode的工作方式,文件装载是非常重要的。如果您正在修改文件,并希望更改出现在容器之间,请尝试装入目录而不是文件。