如何在2个不同的容器之间共享文件?我需要一些用于现有容器的Yamal文件设置。 有人有简单的例子吗?
答案 0 :(得分:0)
这是一个简单的玩具示例,展示了docker中的基本卷的使用
docker-compose.yml
version: "3.7"
services:
container1:
image: alpine:latest
volumes:
- type: bind
source: ./mydata
target: /opt/app/static
entrypoint:
- cat
- /opt/app/static/conf.yml
container2:
image: alpine:latest
volumes:
- type: bind
source: ./mydata
target: /opt/app/static2
entrypoint:
- cat
- /opt/app/static2/conf.yml
conf.yml(位于mydata
文件夹下)
a simple text file
容器已安装在本地mydata
文件夹中
运行docker-compose up
时,将创建容器并将conf.yml
文件的内容输出到stdout
...
container2_1 | a simple text file
container1_1 | a simple text file
docker-compose文件带有版本3.7
注释,但与版本2.4+
兼容,因此也可以像
volumes:
- ./mydata:/opt/app/static
答案 1 :(得分:0)
您应该将相同的文件夹/卷安装到所有正在运行的容器中: 例: docker-compose.yaml:
version: "3"
services:
first:
image: ubuntu:18.04
command: /bin/sh -c "while sleep 1000; do :; done"
volumes:
- "test:/data"
second:
image: ubuntu:18.04
command: /bin/sh -c "while sleep 1000; do :; done"
volumes:
- "test:/data"
volumes:
test:
运行:
docker-compose up -d
docker-compose exec first /bin/sh -c "echo 'Hello shared folder' > /data/example.txt"
docker-compose exec second /bin/sh -c "cat /data/example.txt"
您将看到:Hello shared folder
我们在两个容器的第一个写入文件和第二个读取容器之间共享相同的卷。