我遇到了一个令人费解的问题,似乎找不到解释。
docker run alpine:edge /bin/sh -c "echo AAA"
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安装的路径)
预期的结果是运行一个阿尔卑斯容器并在容器内执行命令/bin/sh -c "echo AAA"。
发布于 2021-08-15 21:39:40
在Git中使用的bash版本中,使用/的路径被重写为Windows路径。这是因为许多Windows程序不处理Unix样式的路径,这使得更多的程序正常工作。
但是,在您的示例中,这会导致将/bin/sh重写到到Windows可执行文件的路径中,如果将它传递给Linux容器,显然不希望如此。解决这个问题的方法是将斜杠(或至少是初始斜杠)加倍,这将告诉shell不要重写它。
https://stackoverflow.com/questions/68795453
复制相似问题