英文:
docker exec --workdir does not work in git-bash
问题
我正在运行 Docker Desktop 4.19.0 在 Windows 10 下。
有一个正在运行的容器,我可以使用 docker exec
在 git-bash
、cmd
和 WSL2 上的 Ubuntu 上执行命令。
#git-bash
me@machine MINGW64 ~
$ docker exec 3eef5ce3f69d pwd
/
#cmd
C:\Users\me>docker exec 3eef5ce3f69d pwd
/
#ubuntu
frank@machine:~$ docker exec 3eef5ce3f69d pwd
/
到目前为止,一切都好。问题出现在我想要改变 WORKDIR 时。
虽然在 cmd
和 ubuntu
上可以工作,但在 git-bash
上运行时失败。但为什么?
#git-bash
me@machine MINGW64 ~
$ docker exec --workdir=/tmp 3eef5ce3f69d pwd
OCI runtime exec failed: exec failed: Cwd must be an absolute path: unknown
#cmd
C:\Users\me>docker exec --workdir=/tmp 3eef5ce3f69d pwd
/tmp
#ubuntu
frank@machine:~$ docker exec --workdir=/tmp 3eef5ce3f69d pwd
/tmp
英文:
I'm running Docker Desktop 4.19.0 under Windows 10.
There is a container running and I can exec a command on it with docker exec
from git-bash
, cmd
and Ubuntu-on-WSL2.
#git-bash
me@machine MINGW64 ~
$ docker exec 3eef5ce3f69d pwd
/
#cmd
C:\Users\me>docker exec 3eef5ce3f69d pwd
/
#ubuntu
frank@machine:~$ docker exec 3eef5ce3f69d pwd
/
so far, so good. The problem arises when I want to change the WORKDIR.
While that works on cmd
and ubuntu
, it fails when run from git-bash
. But why?
#git-bash
me@machine MINGW64 ~
$ docker exec --workdir=/tmp 3eef5ce3f69d pwd
OCI runtime exec failed: exec failed: Cwd must be an absolute path: unknown
#cmd
C:\Users\me>docker exec --workdir=/tmp 3eef5ce3f69d pwd
/tmp
#ubuntu
frank@machine:~$ docker exec --workdir=/tmp 3eef5ce3f69d pwd
/tmp
答案1
得分: 2
Git bash在路径扩展方面执行一些非标准操作,以使诸如/bin/sh
之类的内容映射回Git bash安装目录。要禁用该行为,请使用两个前导斜杠(//path/to/file
):
英文:
Git bash does some non-standard stuff with path expansion to make things like /bin/sh
map back to the Git bash installation directory. To disable that behavior, use a leading double slash (//path/to/file
):
docker exec --workdir=//tmp 3eef5ce3f69d pwd
答案2
得分: 0
我将为双斜杠添加一个额外的用例。
如果你需要在 Windows 上使用 git-bash 中的 ${pwd}
来定义 Docker 卷路径。
docker run -it -v "/$(pwd)":/usr/src/app -w //usr/src/ maven mvn clean package
英文:
I will add one more use case for the double slash.
If you need to use ${pwd}
in docker volumes paths on Windows with git-bash.
docker run -it -v "/$(pwd)":/usr/src/app -w //usr/src/ maven mvn clean package
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论