Docker 在一台机器上构建极其缓慢 运行 一个 swarm 集群
Docker build extremely slow in a machine running a swarm cluster
我将笔记本电脑用作单节点 Docker Swarm 集群。
部署我的集群后,运行 docker build 命令变得非常慢。即使缓存了命令(例如 运行 chmod ...),有时也需要几分钟才能完成。
我该如何调试并了解速度变慢的原因?
上下文
我的 swarm 集群中的服务数量:22
Docker版本:18.04-ce
主持人OS:Linux 4.15.15
主机架构:x86_64
主机规格:i7、16GB 内存、SSD/HDD 混合磁盘(存储docker 图像在硬盘部分)
使用 VM 或 docker-机器:否
在这种情况下,原来是磁盘太多I/O。
正如我上面提到的,我的笔记本电脑的存储分为 SSD 磁盘和 HDD 磁盘。 docker 图像存储在 HDD 磁盘中,但创建的 docker 卷 也是如此(我最初忽略了)。
我所在的集群 运行 在本地包含一个接收大量写入的 PostgreSQL 数据库。这些写入阻塞了我的 HDD 磁盘,因此解决这个特定问题的方法是将 PostgreSQL 的存储挂载到存储在 SDD 磁盘中的目录中。在下面找到调试程序。
我按照 blog post:
中的说明使用 iostat 发现了这一点
iostat -x 2 5
通过查看此命令的输出,很明显我的 HDD 磁盘的 %utilized 参数高达 99%,因此它可能是罪魁祸首。接下来,我 运行 iotop 和 dockerd+postgres 位居榜首。
总而言之,如果您的容器非常 I/O 密集,它们可能会减慢整个 docker 基础设施的速度。
我将笔记本电脑用作单节点 Docker Swarm 集群。
部署我的集群后,运行 docker build 命令变得非常慢。即使缓存了命令(例如 运行 chmod ...),有时也需要几分钟才能完成。
我该如何调试并了解速度变慢的原因?
上下文
我的 swarm 集群中的服务数量:22
Docker版本:18.04-ce
主持人OS:Linux 4.15.15
主机架构:x86_64
主机规格:i7、16GB 内存、SSD/HDD 混合磁盘(存储docker 图像在硬盘部分)
使用 VM 或 docker-机器:否
在这种情况下,原来是磁盘太多I/O。
正如我上面提到的,我的笔记本电脑的存储分为 SSD 磁盘和 HDD 磁盘。 docker 图像存储在 HDD 磁盘中,但创建的 docker 卷 也是如此(我最初忽略了)。
我所在的集群 运行 在本地包含一个接收大量写入的 PostgreSQL 数据库。这些写入阻塞了我的 HDD 磁盘,因此解决这个特定问题的方法是将 PostgreSQL 的存储挂载到存储在 SDD 磁盘中的目录中。在下面找到调试程序。
我按照 blog post:
中的说明使用 iostat 发现了这一点iostat -x 2 5
通过查看此命令的输出,很明显我的 HDD 磁盘的 %utilized 参数高达 99%,因此它可能是罪魁祸首。接下来,我 运行 iotop 和 dockerd+postgres 位居榜首。
总而言之,如果您的容器非常 I/O 密集,它们可能会减慢整个 docker 基础设施的速度。