【发布时间】:2020-07-03 03:36:25
【问题描述】:
我创建了一个docker 图像,我想为其运行多个容器。这个 docker 镜像依赖于一些对所有容器都保持不变的东西,但唯一的区别是容器的配置。
version: '2.4'
services:
s1:
image: testdockerimg:latest
volumes:
- /home/andrew/Documents/CVAI/configs/s1config.json:/home/andrew/Documents/CVAI/configs/config.json
- /home/andrew/Documents/CVAI:/home/andrew/Documents/CVAI/
restart: always
mem_limit: 2g
s2:
image: testdockerimg:latest
volumes:
- /home/andrew/Documents/CVAI/configs/s2config.json:/home/andrew/Documents/CVAI/configs/config.json
- /home/andrew/Documents/CVAI:/home/andrew/Documents/CVAI/
restart: always
mem_limit: 2g
在上面的文件中,您可以看到我为s1 s2 容器提供了s1config 和s2config,但其余内容保持不变,这就是为什么/home/andrew/Documents/CVAI 的容量对于两个容器都是相同的容器。因此,docker 在两个容器之间共享卷,因此所有数据都在容器之间混合,而不是分开。
有什么方法可以将多个容器之间的卷分开吗?我不想为此创建多个 docker。请帮忙。谢谢
编辑
更新 docker-compose 文件:
version: '2.4'
services:
s1:
image: testdockerimg:latest
volumes:
- /home/andrew/Documents/s1/configs/s1config.json:/home/andrew/Documents/CVAI/configs/config.json
- /home/andrew/Documents/s1:/home/andrew/Documents/CVAI/
restart: always
mem_limit: 2g
s2:
image: testdockerimg:latest
volumes:
- /home/andrew/Documents/s2/configs/s2config.json:/home/andrew/Documents/CVAI/configs/config.json
- /home/andrew/Documents/s2:/home/andrew/Documents/CVAI/
restart: always
mem_limit: 2g
【问题讨论】:
-
将您的变量容器特定数据从
/home/andrew/Documents/CVAI移出到单独的卷中。 -
@Henry 正如我所说,我使用的是相同的 docker 映像,并且 docker 文件中的起点是
/home/andrew/Documents/CVAI/file.py。如果我将卷设置为特定于容器,则容器将不会运行,因为路径已更改。 -
容器内的路径保持不变。您只需安装两个不同的外部卷。这就像你对 s1config 和 s2config 所做的一样
-
@Henry 我无法理解。你的意思是说在我的主机系统上,我应该有两个不同的卷 s1 s2 并且在容器中它会保持不变。?
-
是的,这就是卷挂载的工作方式。
标签: docker docker-compose mounted-volumes