我们可以为 运行 多个 docker 容器使用相同的图像吗?

Can we use the same image for running multiple docker containers?

我是 Docker 的新手,开始构建容器。我遇到了 Docker-compose for building multiple container inside a container.

现在,我遇到了 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。生产者容器已启动 运行ning。但同时,如果我 运行 docker-compose consumer.yaml up。此命令使生产者容器终止,然后消费者容器将 运行ning。我如何确保两个容器使用的 imageURL 是分开的。

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

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

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

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

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