Git sh.exe和Docker run(没有这个文件或目录)

3
我遇到了一个棘手的问题,似乎找不到解释。
  1. 运行 /usr/bin/sh.exe(这是Git for Windows提供的sh.exe)

  2. 执行以下命令:docker run alpine:edge /bin/sh -c "echo AAA"

  3. 观察错误信息(为了易读性,我将 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"

1个回答

3
在 Git for Windows 中使用的 bash 版本中,使用 / 的路径会被重写为 Windows 路径。这是因为许多 Windows 程序无法处理 Unix 风格的路径,这样更多的程序可以正常工作。
然而,在您的情况下,这将导致 /bin/sh 被重写为指向 Windows 可执行文件的路径,如果您将其传递给 Linux Docker 容器,显然您不希望出现这种情况。解决方法是将斜杠加倍(或至少将初始斜杠加倍),这将告诉 shell 不要重写它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接