我们可以为 运行 多个 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.yaml
和 consumer.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-producer
和 mynodeapp-consumer
,以防您希望它们并行 运行。
如果您希望两者不同 mongodb
那么您应该将这些名称也配置为不同
我是 Docker 的新手,开始构建容器。我遇到了 Docker-compose for building multiple container inside a container.
现在,我遇到了 docker-compose 容器的问题。
我创建了两个 yaml 文件,它们是 producer.yaml
和 consumer.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-producer
和 mynodeapp-consumer
,以防您希望它们并行 运行。
如果您希望两者不同 mongodb
那么您应该将这些名称也配置为不同