在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:
,所以我必须得出结论,它正在本地查找该命令,而不是在容器内查找。
注意:我运行的Docker是添加到msys2中的$PATH
的Windows版。
$ which docker
/c/Program Files/Docker/Docker/Resources/bin/docker.exe
我曾使用的一种解决方法是创建一个新的Dockerfile,其中只有一行指定要使用的镜像,另一行是我想要执行的命令。然后我可以运行docker run some-image
而无需指定命令,它就能正常工作。
有没有一种方法可以在不使用上述麻烦的解决方法的情况下,在msys2中解决这个问题?
docker run --entrypoint=/usr/src/venv/bin/python myimage test.py
。 - Robertdocker run myimage //usr/src/venv/bin/python test.py
- Robert