gpt4 book ai didi

docker - 使用 CWL(通用工作流语言)将目录挂载到 docker 容器

转载 作者:行者123 更新时间:2023-12-01 06:04:49 25 4
gpt4 key购买 nike

我正在尝试在使用 CWL 时将一堆非常大的文件放入 docker 容器中。使用文件输入的默认方法时

工作.yml:

input_file:
class: File
path: /home/ubuntu/data/bigfile.zip

CWL 运行程序以某种方式复制文件并卡住。有没有一种简单的方法可以将目录直接挂载到 docker 容器中?

任务.cwl:
cwlVersion: cwl:draft-3
class: CommandLineTool
baseCommand: run.sh

hints:
- class: DockerRequirement
dockerImageId: name123

inputs:
- id: input_file
type: File
inputBinding:
position: 1
outputs: []

提前致谢!

最佳答案

CWL 用户指南提供了如何执行此操作的示例:https://www.commonwl.org/user_guide/15-staging/index.html

您使用 InitialWorkDirRequirement并将输入文件添加到要在工作目录中暂存的文件列表,如下所示:

cwlVersion: v1.0
class: CommandLineTool
baseCommand: cat

hints:
DockerRequirement:
dockerPull: alpine

inputs:
in1:
type: File
inputBinding:
position: 1
valueFrom: $(self.basename)

requirements:
InitialWorkDirRequirement:
listing:
- $(inputs.in1)

outputs:
out1: stdout

当您运行它时,例如使用 CWL 引用运行器 ( cwltool ),您可以看到输入文件直接安装在工作目录中(但安全地处于只读模式):
[job step-staging.cwl] /private/tmp/docker_tmpIaCJQ8$ docker \
run \
-i \
--volume=/private/tmp/docker_tmpIaCJQ8:/XMOiku:rw \
--volume=/private/tmp/docker_tmpW2RR3v:/tmp:rw \
--volume=/Users/kghose/Work/code/conditional/runif-examples/wf1.cwl:/XMOiku/wf1.cwl:ro \
--workdir=/XMOiku \
--read-only=true \
--log-driver=none \
--user=501:20 \
--rm \
--env=TMPDIR=/tmp \
--env=HOME=/XMOiku \
--cidfile=/private/tmp/docker_tmpdV6afe/20190502114327-207989.cid \
alpine \
cat \
wf1.cwl > /private/tmp/docker_tmpIaCJQ8/f3c708b20abf7fbf7f089060ec071c0956eb0cfd

但是,正如@TheDudeAbides 所说,CWL 1.0 的行为是挂载文件而不是复制它们。因此,即使您没有暂存它们,它们也会被挂载以使它们可用于容器,只是在不同的目录中。这就是 cwltool、toil 和 SBG 平台的工作原理。

关于docker - 使用 CWL(通用工作流语言)将目录挂载到 docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41489050/

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