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