我可以在基于容器的Azure批处理池中使用docker卷吗
场景:我有多个任务在同一个我可以在基于容器的Azure批处理池中使用docker卷吗,docker,docker-volume,azure-batch,Docker,Docker Volume,Azure Batch,场景:我有多个任务在同一个数据集上运行DL模型。在每个任务中下载相同的数据集会变得很浪费,因此要寻找允许在需要相同数据集的不同任务运行中持久保存下载数据的方法 我研究了资源文件和应用程序包,但据我了解,它们不符合我的要求,原因如下: ResourceFiles为每次任务运行下载数据,并且不会持久化 应用程序包有配额限制(默认为20)。并且不能从docker容器中创建它们 根据docker卷功能,我可以使用相同的卷ID运行任务,下载的数据将保存在虚拟机中。 由于Azure batch没有直接公开用
数据集上运行DL
模型。在每个任务中下载相同的数据集
会变得很浪费,因此要寻找允许在需要相同数据集
的不同任务运行中持久保存下载数据的方法
我研究了资源文件和应用程序包,但据我了解,它们不符合我的要求,原因如下:
ResourceFiles为每次任务运行下载数据,并且不会持久化
应用程序包有配额限制(默认为20)。并且不能从docker容器中创建它们
根据docker卷功能,我可以使用相同的卷ID运行任务,下载的数据将保存在虚拟机中。
由于Azure batch没有直接公开用于运行容器的“docker run”命令,因此是否有其他方法可以指定使用pythonSDK为批处理任务使用卷
我们可以使用TaskContainerSettings的“容器运行选项”来提及docker卷吗
编辑
我尝试在TaskContainerSettings中指定卷,但在尝试写入装入的路径时,遇到权限拒绝错误
PermissionError: [Errno 13] Permission denied: '/opt/docker/Gy9EKVB728YcVZgn7e2AVuuQ/00000001.jpg'
找到了使用docker卷的方法
task_container_settings = batch.models.TaskContainerSettings(
image_name=image_name,
container_run_options=f"-v {<volume_id>}:{<path>}"
)
首先:
使用TaskContainerSettings的“容器运行选项”提及docker卷
task_container_settings = batch.models.TaskContainerSettings(
image_name=image_name,
container_run_options=f"-v {<volume_id>}:{<path>}"
)
这将以root权限运行任务,以便由任务旋转的容器可以访问装载的卷