是否可以使用相同的 docker 镜像运行 100 个容器,但应该使用多个配置文件?如果是的话,你能用一些示例 docker-compose.yml 文件解释一下吗?
我正在尝试通过谷歌运行 cloudprober 工具。
版本:'2'
服务:
s1:
图片:generic_cloudprober
端口:-“5001:9313”
命令:--config_file cloudprober.cfg
这是我通过重复 100 次尝试过的一种类型。这里的目标无法给我响应,但是如果我在启动映像时通过提供配置文件只运行一个容器,则没有任何问题。同样对于具有多个配置文件的许多容器(我创建了几个并尝试过),我得到了响应为终止并退出进程。
答案 0 :(得分:0)
是的,可以使用相同的映像运行多个容器。您必须为每个容器定义不同的 docker-file,或者您可以像我在非常小的示例中所做的那样将单个 docker-compose 组合在一起。我使用了相同的 postgresql 图像和有趣的相同卷以及不同的用户名和密码(您可以根据需要为每个容器定义配置)
unique = set() # <--- use set for storing the domains
for c in CERT.search(domain, fields=CertField):
dn = c["parsed.subject_dn"]
CN = ((dn.split("CN=", 1)[1]).split(" ", 1)[0]).strip(",").strip("*")
unique.add(CN) # <-- add domain
print(sorted(unique)) # <-- print sorted unique items
它将运行两个具有相同镜像但配置不同的容器。
version: "3.9"
services:
db:
image: postgres
volumes:
- ./data/db:/var/lib/postgresql/data
environment:
- POSTGRES_DB=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgre
db2:
image: postgres
volumes:
- ./data/db:/var/lib/postgresql/data
environment:
- POSTGRES_DB=postgres
- POSTGRES_USER=postgres2
- POSTGRES_PASSWORD=postgre2
有关更多参考,请查找此文档参考: https://docs.docker.com/compose/compose-file/compose-file-v3/
注意1:注意版本。 注意2:我同意@Zeitounator 在发布您的问题时,您必须详细说明您使用正确的配置信息所做的工作。由于您是新的贡献者,我们很乐意鼓励您遵循这些准则。
答案 1 :(得分:0)
是的,这是可能的,但是根据您要为 100 个容器部署多少种不同的配置,不使用 docker-compose 可能会更容易。
方法 1:使用没有 docker-compose 的脚本
查看前两个答案here 您需要创建一个启动脚本
docker run --net host -v /tmp/cloudprober.cfg:/etc/cloudprober.cfg \
cloudprober/cloudprober
多次,每次传入您各自的配置文件。或者你可以通过环境变量传递配置,如果这对你来说足够了。
方法二:docker-compose up --scale 查看 this 问题的答案。 假设您有 2 种不同的配置(prod 和 dev)。并且希望为每个配置运行 50 个容器。
制作两份 docker-compose.yml,一份在 dev 文件夹中,一份在 prod 文件夹中。
dev/docker-compose.yml
cloudprober-dev:
image: cloudprober/cloudprober
volumes:
- /tmp/cloudprober-dev.cfg:/etc/cloudprober.cfg
prod/docker-compose.yml
cloudprober-prod:
image: cloudprober/cloudprober
volumes:
- /tmp/cloudprober-prod.cfg:/etc/cloudprober.cfg
然后使用比例选项运行您的作品。
cd dev
docker-compose up --scale cloudprober-dev=50
cd ../prod
docker-compose up --scale cloudprober-prod=50