当使用docker cp
将文件从本地机器/tmp/data.txt
移动到容器时,它失败,并返回错误:
lstat/tmp/data.txt:没有这样的文件或目录
文件存在,我可以毫无问题地运行stat /tmp/data.txt
和cat /tmp/data.txt
。
即使我像data2.txt
一样在/tmp
中创建另一个文件,我也会得到完全相同的错误。
但是,如果我像在~/documents
中那样在/tmp
之外创建一个文件,并用docker cp
复制它,它就可以正常工作。
我查看了docker cp
的文档,其中提到:
无法复制某些系统文件,如/proc、/sys、/dev、tmpfs下的资源,以及用户在容器中创建的装载
但没有提到/tmp
作为这样一个目录。
我在Debian 10上运行,但我的一个朋友在Ubuntu 20.04上可以做得很好。
我们都使用相同版本的docker
(19.03.11(
原因可能是什么?
我找到了解决方案。
我已经安装了docker
作为一个快照。我卸载了它(sudo snap remove docker
(,并使用官方的Docker指南在Debian上安装它。
之后,一切都很顺利。
我认为这可能是由于快照包对系统资源的访问权限有限,但我不确定。