我正在使用笔记本电脑作为单节点Docker Swarm集群。
部署群集后,运行 docker build 命令的速度非常慢。即使命令被缓存(例如RUN chmod ...),也需要几分钟才能完成。
我如何调试它并了解减速的原因是什么?
上下文
我的群集群中的服务数量: 22
Docker版本: 18.04-ce
主机操作系统: Linux 4.15.15
主机拱门: x86_64
主机规格: i7,16GB内存,SSD / HDD混合磁盘(docker images 存储在HDD部分中)
使用虚拟机或泊坞机:否
答案 0 :(得分:2)
在这种情况下,结果是磁盘I / O太多了。
正如我上面提到的,我的笔记本电脑的存储空间分为SSD磁盘和HDD磁盘。 docker镜像存储在HDD磁盘中,但是docker 卷也是如此(我最初忽略了)。
我在本地运行的集群包含一个接收大量写入的PostgreSQL数据库。那些写操作堵塞了我的硬盘磁盘,因此解决这个特定问题的方法是将PostgreSQL的存储装载到存储在SDD磁盘中的目录中。在下面找到调试过程。
我使用 iostat 发现了这一点,如blog post中指示的那样:
iostat -x 2 5
通过查看此命令的输出,很明显我的硬盘磁盘使用的param高达99%,所以它可能是罪魁祸首。接下来,我运行了 iotop ,并且dockerd + postgres位于列表的顶部。
总之,如果您的容器非常耗费I / O,它们可能会使整个docker基础架构变慢,从而进行爬行。