使用不同的配置文件运行多个容器

时间:2021-04-26 14:56:47

标签: docker docker-compose

是否可以使用相同的 docker 镜像运行 100 个容器,但应该使用多个配置文件?如果是的话,你能用一些示例 docker-compose.yml 文件解释一下吗? 我正在尝试通过谷歌运行 cloudprober 工具。 版本:'2' 服务: s1: 图片:generic_cloudprober
端口:-“5001:9313” 命令:--config_file cloudprober.cfg 这是我通过重复 100 次尝试过的一种类型。这里的目标无法给我响应,但是如果我在启动映像时通过提供配置文件只运行一个容器,则没有任何问题。同样对于具有多个配置文件的许多容器(我创建了几个并尝试过),我得到了响应为终止并退出进程。

2 个答案:

答案 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