docker exec –workdir 在 git-bash 中不起作用。

huangapple go评论60阅读模式
英文:

docker exec --workdir does not work in git-bash

问题

我正在运行 Docker Desktop 4.19.0 在 Windows 10 下。

有一个正在运行的容器,我可以使用 docker execgit-bashcmd 和 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 时。

虽然在 cmdubuntu 上可以工作,但在 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

huangapple
  • 本文由 发表于 2023年6月19日 18:05:22
  • 转载请务必保留本文链接:https://go.coder-hub.com/76505589.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定