在msys2中,任何时候我尝试执行一个docker run [image] [cmd]
命令,这样我试图在docker容器中运行时会覆盖Dockerfile中指定的命令,它会在本地查找命令,如果它不存在则会失败.
例如,我的组织有一个docker镜像,其中python可执行文件位于,/usr/src/venv/bin/python
而python不在$PATH
.这不是我的本地python安装的地方,当我尝试运行时,docker run myimage /usr/src/venv/bin/python test.py
我得到这个错误:OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"C:/msys64/usr/src/venv/bin/python\": stat C:/msys64/usr/src/venv/bin/python: no such file or directory"
这个图像不是一个Windows图像,所以它不应该看着C:
所以所以我必须得出结论它在本地寻找该命令而不是在容器内.
注意:我正在运行的$PATH
docker 是添加到msys2内部的Windows的Docker .
$ which docker
/c/Program Files/Docker/Docker/Resources/bin/docker.exe
Run Code Online (Sandbox Code Playgroud)
我使用过的一个解决方法是创建一个新的Dockerfile,它只有一行代表我想要的图像,另一个就是我想要的命令.然后我可以在docker run some-image
不指定命令的情况下运行并且它可以工作
有没有什么方法可以在msys2中解决这个问题而不需要上面描述的烦人的解决方法?
这是由于MinGW Posix 路径转换。
我找到了两个解决方法。
使用双斜杠//
开始路径,那么MSYS将不会转换路径:
docker run myimage //usr/src/venv/bin/python test.py
^^this
Run Code Online (Sandbox Code Playgroud)
MSYS_NO_PATHCONV=1
另一种方法是通过在 Windows Git MSys 或MSYS2_ARG_CONV_EXCL="*"
MSYS2中设置来抑制路径转换。
资料来源:
如何阻止 mingw 和 msys 修改命令行中给出的路径名?
https://github.com/git-for-windows/git/issues/577#issuecomment-166118846
归档时间: |
|
查看次数: |
188 次 |
最近记录: |