gpt4 book ai didi

docker - 简单地说,运行本身运行docker容器的任务的最简单方法是什么?

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

以下代码在一个可迭代对象上映射了一个函数。应用于每个元素的函数运行docker容器以计算其返回值:

import subprocess

def task(arg):
return subprocess.check_output(
["docker", "run", "ubuntu", "bash", "-c", f"echo 'result_{arg}'"]
)

args = [1, 2, 3]
for result in map(task, args):
print(result.decode("utf-8").strip())
result_1
result_2
result_3

在dask中通过云计算资源并行化此计算的最简单方法是什么?

例如,如果可以执行以下操作会很好。但这当然是行不通的,因为在Fargate上执行python代码的docker容器正在运行默认的dask镜像,因此无法自行生成docker容器(我不确定是否存在或在“docker-in-docker”方向上不是解决方案):

import subprocess

from dask.distributed import Client
from dask_cloudprovider import FargateCluster
import dask.bag

def task(arg):
return subprocess.check_output(
["docker", "run", "ubuntu", "bash", "-c", f"echo 'result_{arg}'"]
)

cluster = FargateCluster(n_workers=1)
client = Client(cluster)
args = [1, 2, 3]
for result in dask.bag.from_sequence(args).map(task).compute():
print(result)

我正在寻找不涉及在同一docker镜像中容纳无关代码的解决方案。即我希望我的任务用于其计算的docker镜像是任意的第三方镜像,我不必通过添加python / dask依赖关系来对其进行更改。因此,我认为排除基于 dask_cloudprovider.FargateCluster/ECSCluster下工作节点使用的镜像的解决方案,因为这将必须容纳python / dask依赖项。

最佳答案

将容器拉到kubernetes节点上会产生大量开销,并且只有在任务长时间运行(几分钟,几小时)的情况下,才可以证明是合理的。 dask面向基于Python的低开销任务。

我认为dask不是执行作为容器镜像的任务的正确工具。还有其他几种技术可以更好地支持基于容器的任务/工作流的执行(例如,Airflow的KubernetesExecutor或Argo Workflow)。

您可能考虑的是在基于容器的任务中使用dask_kubernetes来启动临时集群,以执行所需的计算工作。

关于docker - 简单地说,运行本身运行docker容器的任务的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60532366/

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