我想知道是否有办法在同一个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 container(collector)中有一个目录,里面有一些文件:/home/collector/data
我希望将它安装到docker容器中的某个目录:store
任何方法来确保我们安装它的目录,而不是先将它复制到中间的其他地方。
我尝试了以下但无济于事:
-volumes
-volumes_from
非常感谢您的帮助,谢谢!
可能最好在顶层定义一个卷,然后将其挂载到每个容器中,如下所示:
---
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
。
卷复制数据的唯一时间是它们是从映像初始化的命名卷。除此之外,卷始终是直接文件系统安装到卷源。卷中的数据不存在于容器或图像内部,仅在那里安装。
要在两个不同的容器中安装相同的卷,建议使用命名卷,并将两个容器指向相同的卷名:
version: "2.1"
volumes:
data:
services:
collector:
image: collector
volumes:
- data:/home/collector/data
store:
image: store
volumes:
- data:/home/collector/data
请注意,默认情况下会对命名卷进行初始化,但对于以卷开头的第一个容器的内容只会初始化一次。
另请注意,由于Linux inode的工作方式,文件挂载非常重要。如果要修改文件并查找要在容器之间显示的更改,请尝试安装目录而不是文件。