docker build错误检查上下文:'不能统计'\\?\ C:\ Users \ username \ AppData \ Local \ Application Data''

时间:2016-12-22 15:01:49

标签: docker build

在Windows 10上

docker build失败,

成功安装docker后,使用以下命令构建docker镜像。

docker build -t drtuts:latest。 面对下面的问题。 enter image description here

如果有人解决了同样的问题,请告诉我。

15 个答案:

答案 0 :(得分:19)

只需创建一个新目录并输入它:

$ mkdir dockerfiles
$ cd dockerfiles

在该目录中创建您的文件:

$ touch Dockerfile

编辑它并使用vi添加命令:

$ vi Dockerfile

最终运行它:

$ docker build -t tag

答案 1 :(得分:13)

问题说明

当您运行 docker build 命令时,Docker 客户端会收集需要发送到 Docker 守护程序的所有文件,以便它可以构建映像。这个“文件包”称为上下文

将哪些文件和目录添加到上下文中?
上下文包含您传递给 docker build 命令的目录中的所有文件和子目录。例如,当您调用 docker build img:tag dir_to_build 时,上下文将是 dir_to_build 中的所有内容。

如果 Docker 客户端没有足够的权限来读取上下文中的某些文件,您会收到 error checking context: 'can't stat ' <FILENAME> 错误。

这个问题有两种解决方案:

  1. 将您的 Dockerfile 以及构建映像所需的文件移动到不包含其他文件/子目录的单独目录 separate_dir。当您现在调用 docker build img:tag separate_dir 时,上下文将仅包含构建映像实际需要的文件。 (如果错误仍然存​​在,则意味着您需要更改文件的权限,以便 Docker 客户端可以访问它们)。
  2. 使用 .dockerignore 文件从上下文中排除文件。大多数情况下,这可能是您想做的事情。

From the official Docker documentation

<块引用>

在 docker CLI 将上下文发送到 docker 守护程序之前,它会在上下文的根目录中查找名为 .dockerignore 的文件。如果此文件存在,CLI 会修改上下文以排除与其中的模式匹配的文件和目录

回答问题

我会在与 .dockerignore 相同的目录中创建一个 Dockerfile 文件:~/.dockerignore 具有以下内容:

# By default, ignore everything
*
# Add exception for the directories you actually want to include in the context
!project-source-code
!project-config-dir
# source files
!*.py
!*.sh

进一步阅读:

答案 2 :(得分:9)

问题在于当前用户不是目录的所有者。
我在Ubuntu中遇到了同样的问题,此行解决了该问题:

Ubuntu

sudo chown -R $USER <path-to-folder>

来源:Change folder permissions and ownership

Windows

此链接显示了如何在Windows中执行相同操作:
Take Ownership of a File / Folder through Command Prompt in Windows 10

答案 3 :(得分:3)

我在Windows 10 Home版本上也收到了相同的错误消息。

我通过以下步骤解决了这个问题:

  1. 创建一个名为&#39; dockerfiles&#39;的目录。在C:\ Users \(用户名)
  2. 在步骤(1)中提到的新创建的目录下保留{dockerfile without any extension}。
  3. 现在运行命令{来自C:\ Users \(用户名)目录}:     docker build -t ./dockerfiles

    它像微风一样!

答案 4 :(得分:2)

Docker仅向文件所有者授予读取和写入权限,有时,如果尝试构建的用户与所有者不同,则会抛出该错误。

您可以创建一个docker组并在其中添加用户。 在debian中如下所示

sudo groupadd docker

sudo usermod -aG docker $USER

答案 5 :(得分:2)

我遇到了同样的问题,但是使用Linux

$ docker build -t foramontano/openldap-schema:0.1.0 --rm .
$ error checking context: 'can't stat '/home/isidoronm/foramontano/openldap_docker/.docker/config/cn=config''.

我能够通过包括日志中引用的目录(/home/isidoronm/foramontano/openldap_docker/.docker)来解决此问题。我位于目录中的dockerignore文件中有Dockerfile文件。(/ home / isidoronm / foramontano / openldap_docker)

isidoronm@vps811154:~/foramontano/openldap_docker$ ls -al
total 48
drwxrwxr-x 5 isidoronm isidoronm 4096 Jun 16 18:04 .
drwxrwxr-x 9 isidoronm isidoronm 4096 Jun 15 17:01 ..
drwxrwxr-x 4 isidoronm isidoronm 4096 Jun 16 17:08 .docker
-rw-rw-r-- 1 isidoronm isidoronm   43 Jun 13 17:25 .dockerignore
-rw-rw-r-- 1 isidoronm isidoronm  214 Jun  9 22:04 .env
drwxrwxr-x 8 isidoronm isidoronm 4096 Jun 13 17:37 .git
-rw-rw-r-- 1 isidoronm isidoronm    5 Jun 13 17:25 .gitignore
-rw-rw-r-- 1 isidoronm isidoronm  408 Jun 16 18:03 Dockerfile
-rw-rw-r-- 1 isidoronm isidoronm 1106 Jun 16 17:10 Makefile
-rw-rw-r-- 1 isidoronm isidoronm   18 Jun 13 17:36 README.md
-rw-rw-r-- 1 isidoronm isidoronm 1877 Jun 12 12:11 docker-compose.yaml
drwxrwxr-x 3 isidoronm isidoronm 4096 Jun 13 10:51 service

也许在Windows 10中是类似的东西。

答案 6 :(得分:1)

这是我在Windows 10上有效的步骤。以管理员身份打开命令提示符窗口:

cd c:\users\ashok\Documents
mkdir dockerfiles
cd dockerfiles
touch dockerfile
notepad dockerfile           # Write/paste here the contents of dockerfile
docker build -t jupyternotebook -f dockerfile .

答案 7 :(得分:1)

我有同样的问题: 错误检查上下文:“无权读取'\?\ C:\ Users \ userprofile \ AppData \ Local \ AMD \ DxCache \ 36068d231d1a87cd8b4bf677054f884d500b364064779e16..bin”。

一直在咆哮这个问题,尝试运行命令和其他开关的权限没有问题,但是没有用。

创建了dockerfiles文件夹,并将docker文件放在此处,然后从文件夹路径运行命令

C:\ Users \ ShaikhNaushad \ dockerfiles> docker build -t naushad / debian。

它奏效了

答案 8 :(得分:1)

我在Ubuntu中遇到了同样的问题,我只是在 docker build .....

之前添加了 sudo

答案 9 :(得分:0)

由于权限问题,导致此问题。

我建议检查受尊敬的用户的权限,该权限可在Dockerfile中访问。

任何路径都没错。

答案 10 :(得分:0)

我在Windows 10上遇到了类似的情况,并能够使用以下方法解决它:

  1. 从CLI(我使用PowerShell)导航到存储Dockerfile的目录。
  2. 运行docker build .命令

似乎您在Windows 10中使用bash shell,当我尝试使用bash shell时,甚至都没有将docker识别为命令(可以使用docker --version进行检查)。

答案 11 :(得分:0)

在Windows 10上

  • 打开的命令行
  • c:\ users \ User>
  • mkdir dockerfiles
  • cd dockerfiles
  • 记事本Dockerfile.txt
  

//在记事本打开后键入您的docker命令,然后保存您的   Dockerfile。   回到命令行类型“ python-hello-world”。

  • docker image build -t python-hello-world -f ./Dockerfile.txt。

答案 12 :(得分:0)

我正在写,因为这对使用 apparmor

的人有帮助

我在Ubuntu机器上也遇到了这个问题。发生这种情况是因为我运行了“ aa-genprof docker” 命令来扫描“ docker” 命令以创建apparmor配置文件。因此,扫描的进程在目录“ / etc / apparmor.d” 中创建了文件 usr.bin.docker ,该文件为docker命令添加了一些权限。因此,在删除该文件并重新启动计算机之后,泊坞窗再次完美运行。

答案 13 :(得分:0)

如果您是在Mac上带着这个问题来到这里,对我来说,我只需要从包含Dockerfile的目录中退出cd,然后再次进入cd并重新运行命令即可。

答案 14 :(得分:0)

在尝试从放置在/Volumes/work中的Dockerfile构建Docker映像时,我遇到了相同的问题。当我在dockerfiles中创建文件夹/Volumes/work并将Dockerfile放在其中时,它工作正常。