目录

  • 一、概述
  • 二、前提条件
  • 二、单机部署dragonfly
    • 步骤 1:部署 Dragonfly 服务端(supernode)
    • 步骤 2:部署 Dragonfly 客户端(dfclient)
    • 步骤 3:修改 Docker Daemon 配置
    • 步骤 4:拉取镜像
    • 步骤 5:验证
  • 三、多机部署
    • 验证镜像P2P分发

一、概述

最近在研究k8s,有时候会遇到镜像拉取缓慢的问题,尤其是必须在多个主机上复制镜像分发时效率较低,之后查阅资料发现这个dragonfly是通过p2p技术解决镜像传输和分发的问题的,在这里将我的学习过程做一个记录。

Dragonfly一个开源的基于P2P镜像及文件分发系统,由阿里巴巴开源的云原生镜像分发系统 Dragonfly,面向以 Kubernetes 为核心的分布式应用编排系统,前瞻性地解决了云原生镜像分发的下列三大难题:

  • 效率:借助 P2P 与 CDN 技术,缩减镜像传输时间,提升分发效率,加速业务应用交付;
  • 流控:借助智能分析技术,动态平衡分发负载与业务运行态,实现流量动态控制,保障业务稳定运行;
  • 安全:支持私有镜像仓库 HTTPS 协议,加密内容传输,确保信息安全

以上文字介绍来源于dragonfly官网,详细介绍可以查阅下面的链接
dragonfly官网地址:https://d7y.io/zh-cn/index.html
dragonfly的github源码地址:https://github.com/dragonflyoss/Dragonfly

二、前提条件

请确保您的机器上已经安装并启动 docker 容器引擎,docker容器引擎的安装可以参考这篇文章
使用阿里云镜像快速安装docker-ce

二、单机部署dragonfly

使用单机部署就是将dragonfly的客户端和服务端部署在同一台机器上面,我们可以快速的上手使用dragonfly。下面是部署步骤:

步骤 1:部署 Dragonfly 服务端(supernode)

启动supernode

docker run -d --name supernode --restart=always -p 8001:8001 -p 8002:8002 \-v /data/dragonfly/supernode:/home/admin/supernode \dragonflyoss/supernode:0.3.1 -Dsupernode.advertiseIp=127.0.0.1

注意:supernode.advertiseIp必须是客户端能够连通的ip,127.0.0.1仅在服务端和客户端同机情况下才可使用。

查看supernode运行情况

[root@iZwz9 ~]# docker ps |grep supernode
dc7be20113c9        dragonflyoss/supernode:0.3.0                                                "/bin/sh -c '/root/s…"   5 hours ago         Up 5 hours          0.0.0.0:8001-8002->8001-8002/tcp   supernode

查看启动日志

# 1、使用docker logs 查看容器日志
docker logs -f supernode# 2、进入到宿主机的挂载目录查看日志
cd /data/dragonfly/supernode
查看目录
ls -al
drwxr-xr-x 2 root root 4096 Apr  2  2019 bin
drwxr-xr-x 2 root root 4096 Aug  7 01:52 logs
drwxr-xr-x 4 root root 4096 Aug  7 01:52 repo

步骤 2:部署 Dragonfly 客户端(dfclient)

启动Dragonfly 客户端

docker run -d --name dfclient -p 65001:65001 dragonflyoss/dfclient:0.3.1 --registry https://index.docker.io

提示:–registry参数指定镜像仓库地址,https://index.docker.io为官方镜像仓库,您也可以设置为其他仓库地址。

步骤 3:修改 Docker Daemon 配置

我们需要修改 Docker Daemon 配置,通过 mirror 方式来使用 Dragonfly 进行镜像的拉取。

如果大量都是私有registry的话,可以在/etc/docker/daemon.json 中配置dfdaemon和加速器,
如果是一半一半的话,可以一个–registry写私有的,一个–registry写公有的,
在配置文件 /etc/docker/daemon.json中添加或更新如下配置项:
(下面数组中的第二个地址是我的阿里云镜像加速地址)

{"registry-mirrors": ["http://127.0.0.1:65001", "https://kg6h91ac.mirror.aliyuncs.com"]
}

重启 Docker Daemon

systemctl restart docker

提示:如需进一步了解 /etc/docker/daemon.json,请参考 Docker 文档。

步骤 4:拉取镜像

通过以上步骤我们即完成了 Dragonfly 服务端与客户端的部署,并且设置了 Docker Daemon 通过 Dragonfly 来拉取官方镜像。

您可以如平时一样来拉取镜像,例如:

docker pull nginx:latest

步骤 5:验证

您可以通过执行以下命令,检验 nginx 镜像是否通过 Dragonfly 来传输完成。

docker exec dfclient grep 'downloading piece' /root/.small-dragonfly/logs/dfclient.log

如果以上命令有如下输出日志,则说明镜像下载通过 Dragonfly 来完成的

2020-08-07 07:02:59.377 INFO sign:31-1596783778.902 : downloading piece:{"taskID":"e9d9970fcc14e7fd9af90c58721ca6ea6a70c6d1564007ed959a844771751f50","superNode":"172.18.10.55","dstCid":"","range":"","result":502,"status":700,"pieceSize":0,"pieceNum":0}

三、多机部署

多机部署只需要在dragonfly客户端的机器上面设置supernode节点的地址即可,也就是需要添加一个配置文件dfget.yml/etc/dragonfly目录下面。使用如下命令:

mdkir /etc/dragonflycat <<EOD > /etc/dragonfly/dfget.yml
nodes:- dfsupernode(这里填写supernode的ip地址,需要客户端可以访问该ip地址)
EOD

验证镜像P2P分发

如果需要查看镜像是否通过其他 peer 节点来完成传输,可以执行以下命令:

docker exec dfclient grep 'downloading piece' /root/.small-dragonfly/logs/dfclient.log | grep -v cdnnode

如果以上命令没有输出结果,则说明镜像没有通过其他peer节点完成传输,否则说明通过其他peer节点完成传输。

智能镜像分发工具dragonfly的安装和使用相关推荐

  1. 深度解读阿里巴巴云原生镜像分发系统 Dragonfly

    Dragonfly 是一个由阿里巴巴开源的云原生镜像分发系统,主要解决以 Kubernetes 为核心的分布式应用编排系统的镜像分发难题.随着企业数字化大潮的席卷,行业应用纷纷朝微服务架构演进,并通过 ...

  2. 什么? 你还没用过 Cursor? 智能 AI 代码生成工具 Cursor 安装和使用介绍

    作者:明明如月学长, CSDN 博客专家,蚂蚁集团高级 Java 工程师,<性能优化方法论>作者.<解锁大厂思维:剖析<阿里巴巴Java开发手册>>.<再学经 ...

  3. Ubuntu18.04 安装Etcher——开源USB镜像写入工具

    Ubuntu如何安装Etcher--开源USB镜像写入工具 Ubuntu安装Etcher Etcher 是一款跨 Windows.macOS 和 Linux 系统的流行 USB 写入工具,日前它刚更新 ...

  4. 智能创新引导工具软件——项目总结报告

    文章目录 一.项目背景 1.项目理论基础--TRIZ理论 2. 国内外TRIZ理论发展状况 3. 开发目的 4.项目特色 二.项目概述 1.主要功能 2.基本流程 3.运行环境 三.项目实现 1.项目 ...

  5. 用小优启动u盘启动盘制作工具v7.0安装winxp

    小优启动PE智能一键装机工具简单功能介绍: 小优启动PE智能一键装机工具可支持后缀为GHO.ISO和WIM文件系统的安装,一键操作快捷方便,可自动识别系统安装文件.自动挂载.自动提取.自动检测,安装完 ...

  6. 用小优启动u盘启动盘制作工具v7.0安装win7系统

    小优启动PE智能一键装机工具简单功能介绍: 小优启动PE智能一键装机工具可支持后缀为GHO.ISO和WIM文件系统的安装,一键操作快捷方便,可自动识别系统安装文件.自动挂载.自动提取.自动检测,安装完 ...

  7. Python打包分发工具setuptools简介

    Python打包分发工具setuptools 通过这个工具,可以打包安装插件,并且还可以发布到PyPI上面,具体参考: 1.http://python.jobbole.com/87240/ 2.htt ...

  8. python 查看当前目录_「Python」打包分发工具setuptools学习

    ❝ setuptools是python标准的打包分发工具,它可以将我们编写的python项目打包安装,这样其他同事就可以像调用标准库或python第三方库那样直接使用:也可以将项目上传到Pypi供更多 ...

  9. 深度解析两大应用内测分发工具Pre.im与TestFlight

    说起移动应用的内测分发平台,众多开发者首要想到的就是国外的TestFlight.不过最近国内的一家测试平台Testin也针对内测分发这一环节推出了平台Pre.im,受到了开发者的追捧.这里,我们就来深 ...

  10. 文本标注工具BRAT的安装与配置

    文本标注工具BRAT的安装与配置 因此博客是安装完成之后回顾下写的,所以没有配图说明,仅记录下安装步骤及出现的一些问题,具体安装路线如下: 1.win10下VirtualBox与Ubuntu的安装 B ...

最新文章

  1. python强制用什么作为语句缩进符号_python从入门到放弃 第二天 谈谈python代码中的冒号和缩进...
  2. /lib/lsb/init-functions
  3. TCP/IP报文格式
  4. 电子信息工程水声考研去向_哈工大电子与信息工程专业考研 科研方向汇总
  5. 秒杀业务架构优化之路--转
  6. git拉取代码如何解决冲突_开源项目 git pull 代码冲突的解决方式?
  7. 收集的伪静态中经常使用的一些参数解释,如[NC,L,QSA]等
  8. (5)verilog语言编写呼吸灯
  9. 机器学习-斯坦福:学习笔记7-最优间隔分类器问题
  10. [MongoDB]安装MongoDB遇到问题
  11. 2台mysql集群_如何安装配置基于2台服务器的MySQL集群
  12. java入门第五步之数据库项目实战
  13. eureka 注册中心高可用失败,没有互为副本
  14. Java面试题总结(一)
  15. springboot配置文件为yml格式详解
  16. 中国AI领袖人物|阿里王坚:区块链与数据价值的交换
  17. 磁带机技术的应用解析
  18. python实现Excel邮件合并
  19. IT行业十大热门职位
  20. 关于NdFeB样品的测量阶段总结

热门文章

  1. 书摘---创业36条军规7:业务的五个问题
  2. 2017-2018-2 20179215《网络攻防实践》第二周作业
  3. 阿里云服务器延迟多少?测一下
  4. logutils java_【java】简单的日志工具类LogUtils
  5. PHP语言之表单基础——educoder答案
  6. 使用whistle实现移动网页(H5、公众号、企微应用)的本地开发及调试
  7. css 一直图片适配所有手机背景图
  8. 关于电子书pdf打开无目录标签问题的解决方案
  9. python pymysql multiprocessing.dummy多线程 读写数据库报错
  10. Docker启动报错“Job for docker.service failed because a configured resource limit was exceeded.