gpt4 book ai didi

linux - Docker:无法运行存储在已安装卷中的 shell 脚本

转载 作者:可可西里 更新时间:2023-11-01 09:33:10 24 4
gpt4 key购买 nike

我在 Windows 上运行 Docker (1.10.2)。我创建了一个脚本来在我的机器上回显“Hello World”并将其存储在 C:/Users/username/MountTest 中。我创建了一个新容器并将此目录 (MountTest) 挂载为数据卷。我为此运行的命令如下所示:

docker run -t -i --name mounttest -v /c/Users/sarin/MountTest:/home ubuntu /bin/bash

接下来,我运行命令以在容器 mounttest 中执行脚本。

docker exec -it mounttest sh /home/helloworld.sh

结果如下:

: not foundworld.sh: 2: /home/helloworld.sh:
Hello World

我得到了想要的输出(echo Hello World),但我想了解未发现错误背后的原因。

注意:这个问题可能类似于 Run shell script on docker from shared volume ,但它解决了与权限相关的问题。

引用资料:helloworld.sh 文件:

#!/bin/sh

echo 'Hello World'

已安装的卷信息如下所示。 enter image description here

最佳答案

考虑到 'ubuntu' 镜像的默认入口点是 sh -c,在 docker exec 上执行的最终命令是:

sh -c 'sh /home/helloworld.sh'

看起来有点奇怪,可能是错误消息的原因。

简单地尝试:

docker exec -it mounttest /home/helloworld.sh
# or
docker exec -it mounttest sh -c '/home/helloworld.sh'

当然,docker exec 应该在 boot2docker ssh session 中完成,类​​似于您执行 docker run 的 shell session 。
由于 docker run 打开了一个 bash,您应该建立一个新的 boot2docker session (docker-machine ssh),并在那个新的 boot2docker shell session 中,尝试 docker exec

docker run 生成的 bash 中尝试 docker exec 意味着尝试执行 DiD(Docker 中的 Docker)。它与您的测试无关。

关于linux - Docker:无法运行存储在已安装卷中的 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35658892/

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