【问题标题】:Can we use the same image for running multiple docker containers?我们可以使用同一个镜像来运行多个 docker 容器吗?
【发布时间】:2021-03-11 13:43:55
【问题描述】:

我是 Docker 新手,开始构建容器。我遇到了 Docker-compose,用于在一个容器内构建多个容器。

现在,我遇到了 docker-compose 容器的问题。

我创建了两个 yaml 文件,分别是 producer.yamlconsumer.yaml

#producer.yaml
version: "3"
services:
    mymongo:
        image:// imageurl
        port: 6666:6666
    mynodeapp:
        build:
            context: //Dockerfile path
        port:
            - 2222:2222

#end producer.yaml

#consumer.yaml
version: "3"
services:
    mymongo:
        image:// sameImageUrl
        port: 7777:6666
    mynodeapp:
        build:
            context: //Dockerfile path
        port:
            - 3333:3333

#end consumer.yaml

现在,当我运行 docker-compose producer.yaml up 时。生产者容器已启动并正在运行。但同时,如果我运行docker-compose consumer.yaml up。该命令使生产者容器终止,然后消费者容器将运行。我如何确保使用的 imageURL 对于两个容器都是分开的。

【问题讨论】:

  • 试试docker-compose up -f producer.yaml -f consumer.yaml up
  • 谢谢@TarunLalwani。有效。使用 2 个命令运行有什么问题?

标签: docker docker-compose dockerfile docker-machine


【解决方案1】:

要运行多个文件,您应该一起运行所有文件

docker-compose up -f producer.yaml -f consumer.yaml up

当您运行单个文件时,compose 将尝试启动所有服务,如果没有服务名称冲突,它不会杀死任何现有服务。

在您的情况下,您的消费者和生产者都有相同的服务名称,这是错误的。因为当你合并这两个文件时,compose 将只使用其中一个定义。因此,您在 yaml 中的服务名称应为 mynodeapp-producermynodeapp-consumer,以防您希望它们并行运行。

如果您希望两者的 mongodb 不同,那么您也应该将这些名称配置为不同

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    • 2018-05-12
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多