Docker教程:使用gitbash(Windows),Docker run-it ubuntu ls/给了我一个无文件



我参与了本教程中关于数据持久性的讨论。

首先,我运行这个命令将一个随机数放入ubuntu图像中的文本文件中:

docker run -d ubuntu bash -c "shuf -i 1-10000 -n 1 -o /data.txt && tail -f /dev/null"

我想我很理解这句话。

接下来,指令要求我启动一个新的容器(相同的图像(,我会看到文件不一样:

docker run -it ubuntu ls /

然而,当我运行上述命令时,我会得到以下错误:

/ ls: cannot access 'C:/Program Files/Git/': No such file or directory

我使用Git Bash运行Windows 10,这是通过VS代码完成的。

目前,我已经通过重新运行确切的命令(docker run-d ubuntu bash-c"shuf-I 1-10000-n 1-o/data.txt&tail-f/dev/null"(来解决这个问题,但我想知道为什么docker run-it ubuntu ls/指令失败,以及解决方案是什么?

我设法解决了这个问题,所以我在这里发布了解决方案,以防人们将来遇到同样的问题:git bash会更改绝对路径,因此应该禁用它。

将其放入.bashrc中以更正路径的处理方式:

# Workaround for Docker for Windows in Git Bash.
docker()
{
(export MSYS_NO_PATHCONV=1; "docker.exe" "$@")
}

不幸的是,这在从npm脚本调用docker run等场景中不起作用。卷映射仍然会中断。

请参阅此处继续探讨问题并查看可能的解决方案

最新更新