我正在尝试从Dockerfile构建Docker映像。我在运行于VMWare Player 14的CentOS 7来宾OS上安装了Docker-CE 18.06。项目目录位于通过VMWare的vmhgfs-fuse工具安装的共享文件夹内。我的主机操作系统是Windows 10 Home。到目前为止,我尚未对该项目使用docker-compose。
[superdurszlak @ localhost候选人匹配] $ sudo docker build -t候选人匹配。
无法准备上下文:路径“。”找不到
[superdurszlak @ localhost候选人匹配] $ sudo docker build -t候选人匹配--file ./Dockerfile。
无法准备上下文:路径“。”找不到
我已经仔细检查了我的Dockerfile是否正确命名,我的docker守护进程是否启动并运行,我的工作目录是否正确以及是否可以从来宾操作系统内部访问共享文件夹的内容而没有问题。
这种错误的可能原因是什么?
答案 0 :(得分:1)
这是一个权限问题。如果root用户无权读取您的当前目录,并且您使用ffmpeg
运行docker命令,那么您将看到“未找到”错误。这可能表明父目录在最后一节中没有读取和执行权限(例如sudo
将破坏对chmod 700 $HOME
的根访问)。
两种解决方案:
如您所见,以您自己的用户身份而不是root用户身份运行命令。这可以通过将自己添加到docker组中来完成:$HOME/my_proj
使用sudo usermod -aG docker $(id -un) && newgrp docker
将父目录的权限固定为至少chmod
。确保适当限制了这些目录中的所有敏感文件(例如0755
)。
答案 1 :(得分:0)
显然,对于没有经验的Docker用户,解决上述问题的方法很简单,但可能并不明显。我需要将用户添加到 docker 组中,以便从放置在共享文件夹中的Dockerfile构建Docker映像。
有趣的是,我现在可以以没有root权限的用户身份构建docker映像:
[superdurszlak @ localhost候选人匹配] $ docker build。
将构建上下文发送到Docker守护程序1.055MB
步骤1/8:从ubuntu:18.04
工作正常
但是运行 sudo docker build ... 仍然会导致问题中提到的错误。
根据docker文档,将用户添加到 docker 组是可选的,尽管: https://docs.docker.com/install/linux/linux-postinstall/