我在我的主机上创建了几个不同的目录,因为我试图了解Docker只是为了保持我的dockerfiles有条理 . 我刚刚运行的我的Dockerfile看起来像这样:
FROM crystal/centos
MAINTAINER crystal
ADD ./rpms/test.rpm ./rpms/
RUN yum -y --nogpgcheck localinstall /rpms/test.rpm
我的实际转速仅为1 GB . 但是当我尝试执行 sudo docker build -t="crystal/test" .
时,我会将构建上下文发送到Docker守护程序3.5 GB . 当你继续构建Docker镜像时,还有其他我不知道的东西吗?当我在主机上的其他目录中构建更多图像时,我的内存是否在累积?
5 回答
Docker客户端将整个"build context"发送到Docker守护程序 . 该构建上下文(默认情况下)是
Dockerfile
所在的整个目录(因此,整个rpms
树) .您可以设置.dockerignore文件以使Docker忽略某些文件 . 您可能想要试验它 .
或者,您可以将
rpms
文件夹移动到Dockerfile
上方的一个目录级别,并将符号链接test.rpm
移动到Dockerfile
的目录中 .我通过将我的Dockerfile和docker-compose.yml移动到子文件夹来修复它,它运行得很好 . 显然,docker将当前文件夹发送到守护进程,我的文件夹是9演出 .
在我的情况下,当我执行错误的
-f
参数 - 没有路径到位于Dockerfile的目录docker build --no-cache -t nginx5 -f /home/DF/Dockerfile /home/DF/
- 对docker build --no-cache -t nginx5 -f /home/DF/Dockerfile
- 错了如果您有一个
.dockerignore
文件并且构建上下文仍然很大,您可以使用The Silver Searcher检查发送到docker构建上下文的内容:请注意,某些
**
模式可能无法正常工作 .有关其他评论,请参阅此Github问题:https://github.com/moby/moby/issues/16056
我和FreeStyler有同样的问题 . 但是我是从我的上下文中的目录构建的 . 所以-f参数是正确的,上下文是不正确的 .
从docker-dir建造以下是好的
从dock-dir构建,构建上下文发生了变化 . 因此我需要更改命令中的上下文 . 上下文由' . '给出 . 在上面的命令中 .
项目目录中的新命令应该是
这里的上下文由'./base'给出