linux 从docker镜像运行脚本

dly7yett  于 2023-08-03  发布在  Linux
关注(0)|答案(2)|浏览(156)

我试图运行的项目给出here。它是一种从docker容器编译LaTeX的算法。但我正在努力执行给定步骤的最后命令。跟随我正在键入的命令的列表。

sudo groupadd docker
sudo usermod -aG docker ${USER}
su ${USER}
IMAGE=blang/latex:ctanfull
docker pull ${IMAGE}
docker run "$IMAGE" run.sh

字符串
但是,最后一个命令返回以下错误:

docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "run.sh": executable file not found in $PATH: unknown.
ERRO[0000] error waiting for container:


Docker容器似乎无法在我的本地目录中找到文件。准确地说,我必须调用一个docker容器,并从这个容器执行一个本地bash脚本,而不改变docker镜像。我还尝试了下面列出的其他命令。

docker run --rm --entrypoint '' blang/latex:ctanfull sh -c "./run.sh"
docker run -it --rm --entrypoint '' blang/latex:ctanfull /bin/bash -c "./run.sh"
docker run -it --rm --entrypoint '' blang/latex:ctanfull sh -c "./run.sh"


但是没有一个能够找到run.sh脚本。
感谢您的关注,并致以最良好的问候。

snz8szmq

snz8szmq1#

如果run.sh在您的本地机器上,您可以在同一个文件夹中像这样运行

docker run -v `pwd`:/tmp -it blang/latex:ctanfull sh /tmp/run.sh

字符串

qvtsj1bj

qvtsj1bj2#

Docker容器没有访问主机文件系统的权限,除非您显式授予它们
要给予容器访问run.sh脚本,可以使用卷Map将脚本Map到容器,如下所示

docker run -v $(pwd)/run.sh:/script/run.sh "$IMAGE" /script/run.sh

字符串
现在,run.sh脚本可以在容器中作为/script/run.sh访问。
或者,如果您愿意,可以将脚本通过管道传输到容器中的shell中,如下所示

cat run.sh | docker run -i "$IMAGE" /bin/sh

相关问题