gpt4 book ai didi

docker - Docker容器中的并行代码执行

转载 作者:行者123 更新时间:2023-12-02 19:26:13 25 4
gpt4 key购买 nike

我有一个脚本,可以通过URLslist抓取数据。
该脚本正在docker容器中执行。
我想在多个实例中运行它,例如20。
为此,我想使用docker-compose scale worker=20并将INDEX传递给每个实例,以便脚本知道应删除哪些URL。

例。

ID, URL
0 https://example.org/sdga2
1 https://example.org/fsdh34
2 https://example.org/fs4h35
3 https://example.org/f1h36
4 https://example.org/fs4h37
...

如果存在3个实例,则脚本的第一个实例应处理一个ID等于0、3、6、9的URL,即ID = INDEX + INSTANCES_NUM * k。

我不知道如何将INDEX传递给在Docker容器中运行的脚本。
当然,我可以在docker-compose.yml中使用环境变量中的不同INDEX复制服务。但是如果实例数大于10甚至是50,将是一个非常糟糕的解决方案)

有人知道怎么做吗?

最佳答案

使用docker-composeI don't believe there's any support for this。但是,在可以使用类似撰写文件的群体模式下,可以使用service templates{{.Task.Slot}}传递为环境变量。例如。

version: '3'
services:
test:
image: busybox
command: /bin/sh -c "echo My task number is $$task_id && tail -f /dev/null"
environment:
task_id: "{{.Task.Slot}}"
deploy:
replicas: 5

我使用 docker-compose up而不是 docker stack deploy -c docker-compose.yml test进行部署。我的本地群集集群只是使用 docker swarm init创建的单个节点。

然后,检查以下每个正在运行的容器:
$ docker ps --filter label=com.docker.swarm.service.name=test_test
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ccd0dbebbcbe busybox:latest "/bin/sh -c 'echo My…" About a minute ago Up About a minute test_test.3.i3jg6qrg09wjmntq1q17690q4
bfaa22fa3342 busybox:latest "/bin/sh -c 'echo My…" About a minute ago Up About a minute test_test.5.iur5kg6o3hn5wpmudmbx3gvy1
a372c0ce39a2 busybox:latest "/bin/sh -c 'echo My…" About a minute ago Up About a minute test_test.4.rzmhyjnjk00qfs0ljpfyyjz73
0b47d19224f6 busybox:latest "/bin/sh -c 'echo My…" About a minute ago Up About a minute test_test.1.tm97lz6dqmhl80dam6bsuvc8j
c968cb5dbb5f busybox:latest "/bin/sh -c 'echo My…" About a minute ago Up About a minute test_test.2.757e8evknx745120ih5lmhk34

$ docker ps --filter label=com.docker.swarm.service.name=test_test -q | xargs -n 1 docker logs
My task number is 3
My task number is 5
My task number is 4
My task number is 1
My task number is 2

关于docker - Docker容器中的并行代码执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56040426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com