在容器内执行脚本

execute a script inside a container

我在安装 Home Assistant 时遇到了这个问题。 当我连接到 ssh 插件时,我可以 运行 这样的命令

docker exec ipmidocker /home/ipmidocker/ipmi_pub.sh

它工作得很好,但是如果我尝试将该命令放入脚本中并尝试从出现此错误之前使用的相同 shell 执行脚本。

: no such file or directory: unknown: container_linux.go:380: starting container process caused: exec: "/home/ipmidocker/ipmi_pub.sh\r": stat /home/ipmidocker/ipmi_pub.sh

我已经尝试将脚本放入定义为目标容器的 $PATH 的目录之一,我什至尝试从脚本生成二进制文件,但我总是遇到这样的错误:

OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: ***: executable file not found in $PATH: unknown

我试图直接在脚本中放入一个我知道可以在该容器上运行的命令,但我又遇到了同样的错误。

这与我正在处理的特定容器有关,因为相同的方法适用于其他容器,例如 NUT 插件...

任何有关在何处尝试获取有用信息的建议都将得到应用

看起来路径末尾有一个 \r 字符。 我猜你当时正在研究 Windows。

Windows 使用 \r\n 表示一行结束,而其他系统仅使用 \n。 您需要删除 \r 这样您就只剩下 \n.

您可以通过在您使用的文本编辑器中进行一些设置来做到这一点。或者像这样使用 sed 编辑文件:sed $'s/\r$//' <file> > <file>.unix