我遇到了一个令人困惑的问题,似乎找不到解释。
运行/usr/bin/sh.exe(这是Git for Windows提供的sh.exe)
执行以下命令: docker run alpine:edge /bin/sh -c "echo AAA"
观察错误(为了可读性,我将git-installation-path替换为git-installation-path):docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "<git-installation-path>/usr/bin/sh": stat <git-installation-path>/usr/bin/sh: no such file or directory: unknown.
我不明白为什么docker
要尝试使用 sh.exe 的本地路径(来自 Git 安装的路径)
预期的结果是运行一个Alpine容器并/bin/sh -c "echo AAA"
在容器内执行命令
在 Git for Windows 中使用的 bash 版本中,使用的路径/
被重写为 Windows 路径。这是因为许多 Windows 程序不处理 Unix 样式的路径,这使得更多程序可以正常工作。
但是,在您的情况下,这会导致/bin/sh
被重写到 Windows 可执行文件的路径中,如果您将其传递到 Linux Docker 容器中,这显然是您不想要的。对此的解决方案是将斜杠(或至少是初始斜杠)加倍,这将告诉 shell 不要重写它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句