首页 » Docker » docker pull和push的性能分析

docker pull和push的性能分析

 

测试环境

基本架构:没有docker index,所有操作发生在daemon和registry之间
没有做并发,只是单registry,单docker daemon做了一个测试。从单个操作看,docker push/pull的50%以上耗时在docker daemon,做分层、打tar包、checksum等。在这方面registry层的优化已经意义不大。
镜像:

网络环境:docker daemon和registry之间为千兆网络,带宽足够大。

1. docker push 日志分析及registry put对比测试

在客户端做一次docker push的时候,观察registry端日志,刨去无关的一些日志后,如下:

可以发现,对于一个2层的镜像,整个push的时间可以分成几段

操作|耗时|百分比
|:----|:---
put json1|3s|0.8%
put layer1|34s|9.2%
put json2|6s|1.6%
put layer2|325s|87.6%
总耗时|371s|100%

也就是说,在做put layer1和put layer2时消耗了96.8%的时间。那么,纯的对registry服务做同样文件的PUT操作,会消耗多少时间呢?

2. docker pull 日志分析及registry get对比测试

类似上个节,继续做pull的日志分析

可以发现,对于一个2层的镜像,整个pull的时间可以分成几段

操作|耗时|百分比
|:----|:---
get json1|6s|5.1%
get layer1|42s|36.2%
get json2|0s|0%
get layer2|2s|1.7%
总耗时|116s|100%

对比直接从registry上get测试

 

原文链接:docker pull和push的性能分析,转载请注明来源!

3