首页 > 解决方案 > Docker 教程: docker run -it ubuntu ls / 使用 git bash (Windows) 给我一个无文件/目录错误

问题描述

我在本教程中讨论数据持久性

首先,我运行此命令将随机数放入 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 Code 完成的。

现在,我通过重新运行确切的命令(docker run -d ubuntu bash -c "shuf -i 1-10000 -n 1 -o /data.txt && tail -f /dev/null "),但我想知道为什么 docker run -it ubuntu ls / 指令失败,解决方案是什么?

标签: dockergit-bash

解决方案


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

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

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

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

请参阅此处以继续探索问题并查看可能的解决方法


推荐阅读