【问题标题】:How to create separate volumes for each container in docker compose如何在 docker compose 中为每个容器创建单独的卷
【发布时间】: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 容器提供了s1configs2config,但其余内容保持不变,这就是为什么/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


【解决方案1】:

在主机上,每个容器都应该有自己的卷。它们可以以相同的路径安装在容器中。每个容器都可以使用相同的映像,并且将在主机上以相同的名称看到其专用卷。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多