我们可以使用同一个镜像来运行多个 docker 容器吗?

时间:2021-03-11 13:43:55

标签: docker docker-compose dockerfile docker-machine

我是 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 是分开的。

1 个答案:

答案 0 :(得分:0)

要运行多个文件,您应该同时运行所有文件

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

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

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

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

相关问题