运行docker build
命令时,docker客户端会收集需要发送到docker守护程序的所有文件,以便生成映像。这个文件包被称为上下文。
哪些文件和目录被添加到上下文中
上下文包含传递给docker build
命令的目录中的所有文件和子目录。例如,当您调用docker build img:tag dir_to_build
时,上下文将是dir_to_build
中的所有内容。
如果Docker客户端没有足够的权限读取上下文中的某些文件,则会得到错误检查上下文:'can't stat'
这个问题有两个解决方案:
将Dockerfile和构建映像所需的文件一起移动到不包含其他文件/子目录的单独目录separate_dir
。现在调用docker build img:tag separate_dir
时,上下文将只包含构建图像所需的实际文件。(如果错误仍然存在,则意味着您需要更改文件的权限,以便Docker客户端可以访问这些文件)
使用从上下文中排除文件。dockerignore文件。大多数时候,这可能是你想要做的
从官方Docker留档:
在docker CLI将上下文发送到docker守护程序之前,它会查找名为的文件。dockerignore位于上下文的根目录中。如果此文件存在,CLI将修改上下文,以排除与其中模式匹配的文件和目录。
我会创建一个
。DockerInore
文件位于与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
进一步阅读:
Docker官方文件
- 我觉得这个博客很有帮助
只需创建一个新目录并输入它:
$ mkdir dockerfiles
$ cd dockerfiles
在该目录中创建您的文件:
$ touch Dockerfile
编辑它并使用vi
添加命令:
$ vi Dockerfile
Fnally运行它:
$ docker build -t tag .
问题是当前用户不是目录的所有者
我在Ubuntu中遇到了同样的问题,这一行解决了这个问题:
Ubuntu
sudo chown -R $USER <path-to-folder>
来源:更改文件夹权限和所有权
窗户
此链接显示了如何在Windows中执行相同操作:
在Windows 10中通过命令提示符获取文件/文件夹的所有权
检查Java JDK和Android SDK版本Android_SDK_ROOT=C:\users\rpwebapps\appdata\local\Android\SDK(推荐设置)Android_Home=C:\users\rpwebapps\appdata\local\Android\SDK(DEPRECATED)无法读取未定义的属性“length”[ERROR]运行子进程Cordova时发生
我使用的是Firefox Quantum 59.0(64位),在Windows 7 64位上, 当我在Eclipse版本:Oxygen.2版本(4.7.2)和Geckodriver.exe版本0.20.0发布日期2018-03-08(32位和64位)中执行测试用例时,在Eclipse控制台中会出现以下情况
我得到这个错误时使用"init npm"命令在一个新安装的Node.js 错误:enoint,stat'C:\Users\Ali\AppData\Roaming\npm'
问题内容: 我有Windows 7 32位。我安装了最新的32位Node.js。 当我尝试运行命令时,收到错误消息: 错误:ENOENT,状态为’C:\ Users \ RT \ AppData \ Roaming \ npm 如何解决呢? 问题答案: 在显示的路径中手动创建一个名为“ npm”的文件夹可以解决该问题。 可以在“ 故障排除”页面上找到更多信息。
我在stackoverflow上搜索了很多,但在我的案例中没有一个解决方案起作用。我想做一个简单的媒体播放器,从原始源播放音频。我的原始文件夹大小约为2 GB。当我尝试清理和重建我的项目时,它显示错误 我的建筑.Gradle是
我刚刚用Windows8在我的新电脑上安装了Nodejs。我不能让npm去做。尽管节点服务器启动正常: 以下是错误: