我正在Ubuntu 20.04服务器上运行大约30多个容器(Redis、MySQL、RabbitMQ、.Net核心、 flask 和其他)。
以前在1分钟内建造的码头集装箱现在需要10多分钟。在某些情况下,超过20分钟。
例如,构建一个Flask应用程序有时需要30分钟,而其他时候则需要10秒。我知道这不是缓存问题,因为它会停留在COPY
指令上,该指令应该复制单个.py
文件。ps, stat, logs
等docker命令的情况也是如此,类似的映像在其他计算机上构建速度非常快(使用相同的资源)
无论何时发生这种情况,我都监控了资源使用情况,并且有超过70% RAM and CPU
的可用资源,显然没有任何资源限制。
我的docker版本是Docker version 23.0.1, build a5ee5b1
,containerd版本是containerd.io 1.6.16
1条答案
按热度按时间pqwbnv8z1#
看起来您有很大的生成上下文。在生成过程中,指定目录中未在
.dockerignore
中列出的所有文件和目录都将复制到生成上下文目录,然后由Docker引擎使用。并且Dockerfile
中的COPY
命令是从该生成上下文复制的,而不是从您的本地目录复制的。因此,即使您COPY
一个文件,您仍然会将所有其他文件复制到构建上下文。请将所有不必要的文件和目录添加到
.dockerignore
文件并检查是否有帮助。有关详细信息,请参见Understanding the Docker Build Context (Why You Should Use Dockerignore)。