运行 docker 1.12.1;在 RH 7.2 64 位上。
docker 总体上工作正常;我运行容器的命令;或导入文件……都很好。
但是当我在这里尝试这个时:
/data $ docker build -t foo/bar:1 .
我得到:
unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /data/Dockerfile: no such file or directory
然后我尝试了:
/data $ lstat Dockerfile
bash: lstat: command not found...
Similar command is: 'stat'
/data $ stat Dockerfile
stat: cannot stat ‘Dockerfile’: No such file or directory
但是
/data $ stat /data/Dockefile
File: ‘/data/Dockefile’
Size: 471 Blocks: 8 IO Block: 4096 regular file
Device: fd03h/64771d Inode: 127 Links: 1
Access: (0600/-rw-------) Uid: (1125706/guenthne) Gid: ( 600/ gloadl)
Access: 2016-09-05 16:37:42.835090097 +0200
Modify: 2016-09-05 16:37:42.835090097 +0200
Change: 2016-09-05 16:37:42.835090097 +0200
Birth: -
需要说明的是:当我使用same 命令时;以及我本地 Ubuntu Linux 上的相同 dockerfile,所有这些都工作正常。不,/data 不是符号链接(symbolic link);但我想:它设置了 sticky 位。不幸的是,该系统上我具有写入权限的所有目录(/data、/home 和/tmp)都是粘性的。
问题是:
- 知道是什么导致了这个问题吗?
- 当然,更重要的是:解决方案,或者至少是解决方法?
根据要求更新:
> ls -al $(which docker)
-rwxr-xr-x 1 root root 13914136 Aug 18 07:07 /bin/docker
最佳答案
在这里发布我的问题的答案;以防万一有人不小心遇到同样的问题;因为这与 stat、lstat 或任何东西无关。
问题是一个简单的拼写错误:将工作中的 Dockerfile 复制到我的远程构建服务器时;我搞砸了,并将文件命名为 Dockerfile 而不是 Dockerfile(因此 Docker 中缺少 r)
本质上,docker 给出了正确的消息:
无法准备上下文:无法评估 Dockerfile 路径中的符号链接(symbolic link):lstat /data/Dockerfile:没有这样的文件或目录
但不幸的是,关于“上下文/符号链接(symbolic link)”的前缀只是误导。
关于linux - docker build 无法在 **sticky** 目录中使用 Dockerfile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39341327/