将一串参数传递给 "docker run imagefile"
Pass a string of arguments to a "docker run imagefile"
我对 Docker 有疑问。
我制作了一个 Singularity 图像文件,它有一个 运行 脚本,需要一些参数才能工作。这些是该脚本的第一行:
#!/bin/sh
FS=' ' read -r -a array <<< "$@"
etc etc...
我必须将它转换成 Docker 图像,我已经使用 singularity2docker 来做到这一点。我尝试在没有任何参数的情况下启动它(一个简单的 docker 运行 -it containername),我可以看到 运行 脚本已执行但是,当然,由于缺少参数,它不能正常工作。
如果我尝试添加它们 (docker 运行 -it containername "-t arg1 -n arg2") 我得到
docker: Error response from daemon: OCI runtime create failed:
container_linux.go:348: starting container process caused "exec:
\"-t\": executable file not found in $PATH": unknown.
我敢肯定这其中有一些愚蠢的原因,可能是由于 singularity2docker 转换。我可以轻松访问用于构建 Docker 图像的沙箱,但我真的不知道该怎么做。这是我可以在里面找到的 Docker 文件。
FROM scratch
ADD . /
ENV LD_LIBRARY_PATH /.singularity.d/libs
ENV PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
LABEL "org.label-schema.build-date" "Fri,_20_Apr_2018_14:42:15_+0000"
LABEL "org.label-schema.build-size" "1374MB"
LABEL "org.label-schema.schema-version" "1.0"
LABEL "org.label-schema.usage.singularity.deffile" "test1.def"
LABEL "org.label-schema.usage.singularity.deffile.bootstrap" "docker"
LABEL "org.label-schema.usage.singularity.deffile.from" "centos:7"
LABEL "org.label-schema.usage.singularity.version" "2.4.4-dist"
CMD ["/bin/bash", "run_singularity2docker.sh"]
我想尝试设置一个 ENTRYPOINT 可能会奏效,但我什至不确定我是否以及如何使用该临时沙箱来做到这一点..
如有任何帮助,我们将不胜感激。
将此切换为使用入口点。命令值会被您在图像名称后传递的任何内容覆盖。如果您定义一个,则命令的值附加到入口点。
首先将您的脚本切换为在第一行中使用 bash:
#!/bin/bash
FS=' ' read -r -a array <<< "$@"
etc etc...
然后更新您的 Dockerfile 以使用入口点:
FROM scratch
ADD . /
ENV LD_LIBRARY_PATH /.singularity.d/libs
ENV PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
LABEL "org.label-schema.build-date" "Fri,_20_Apr_2018_14:42:15_+0000"
LABEL "org.label-schema.build-size" "1374MB"
LABEL "org.label-schema.schema-version" "1.0"
LABEL "org.label-schema.usage.singularity.deffile" "test1.def"
LABEL "org.label-schema.usage.singularity.deffile.bootstrap" "docker"
LABEL "org.label-schema.usage.singularity.deffile.from" "centos:7"
LABEL "org.label-schema.usage.singularity.version" "2.4.4-dist"
ENTRYPOINT ["/bin/bash", "run_singularity2docker.sh"]
然后 运行 你的命令不引用参数将它们作为单独的参数传递给你的入口点脚本:
docker run -it containername -t arg1 -n arg2
我对 Docker 有疑问。 我制作了一个 Singularity 图像文件,它有一个 运行 脚本,需要一些参数才能工作。这些是该脚本的第一行:
#!/bin/sh
FS=' ' read -r -a array <<< "$@"
etc etc...
我必须将它转换成 Docker 图像,我已经使用 singularity2docker 来做到这一点。我尝试在没有任何参数的情况下启动它(一个简单的 docker 运行 -it containername),我可以看到 运行 脚本已执行但是,当然,由于缺少参数,它不能正常工作。 如果我尝试添加它们 (docker 运行 -it containername "-t arg1 -n arg2") 我得到
docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"-t\": executable file not found in $PATH": unknown.
我敢肯定这其中有一些愚蠢的原因,可能是由于 singularity2docker 转换。我可以轻松访问用于构建 Docker 图像的沙箱,但我真的不知道该怎么做。这是我可以在里面找到的 Docker 文件。
FROM scratch
ADD . /
ENV LD_LIBRARY_PATH /.singularity.d/libs
ENV PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
LABEL "org.label-schema.build-date" "Fri,_20_Apr_2018_14:42:15_+0000"
LABEL "org.label-schema.build-size" "1374MB"
LABEL "org.label-schema.schema-version" "1.0"
LABEL "org.label-schema.usage.singularity.deffile" "test1.def"
LABEL "org.label-schema.usage.singularity.deffile.bootstrap" "docker"
LABEL "org.label-schema.usage.singularity.deffile.from" "centos:7"
LABEL "org.label-schema.usage.singularity.version" "2.4.4-dist"
CMD ["/bin/bash", "run_singularity2docker.sh"]
我想尝试设置一个 ENTRYPOINT 可能会奏效,但我什至不确定我是否以及如何使用该临时沙箱来做到这一点..
如有任何帮助,我们将不胜感激。
将此切换为使用入口点。命令值会被您在图像名称后传递的任何内容覆盖。如果您定义一个,则命令的值附加到入口点。
首先将您的脚本切换为在第一行中使用 bash:
#!/bin/bash
FS=' ' read -r -a array <<< "$@"
etc etc...
然后更新您的 Dockerfile 以使用入口点:
FROM scratch
ADD . /
ENV LD_LIBRARY_PATH /.singularity.d/libs
ENV PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
LABEL "org.label-schema.build-date" "Fri,_20_Apr_2018_14:42:15_+0000"
LABEL "org.label-schema.build-size" "1374MB"
LABEL "org.label-schema.schema-version" "1.0"
LABEL "org.label-schema.usage.singularity.deffile" "test1.def"
LABEL "org.label-schema.usage.singularity.deffile.bootstrap" "docker"
LABEL "org.label-schema.usage.singularity.deffile.from" "centos:7"
LABEL "org.label-schema.usage.singularity.version" "2.4.4-dist"
ENTRYPOINT ["/bin/bash", "run_singularity2docker.sh"]
然后 运行 你的命令不引用参数将它们作为单独的参数传递给你的入口点脚本:
docker run -it containername -t arg1 -n arg2