Docker与Dragonfly详细多机部署

声明

1)该文章整理自网上的大牛和专家无私奉献的资料,具体引用的资料请看参考文献。
2)本文仅供学术交流,非商用。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。
3)博主才疏学浅,文中如有不当之处,请各位指出,共同进步,谢谢。
4)此属于第一版本,若有错误,还需继续修正与增删。还望大家多多指点。大家都共享一点点,一起为祖国科研的推进添砖加瓦。

一:部署环境

1:需要至少两台以上的主机节点,一台充当supernode,另一台为dfclient
2:每个主机节点都已部署docker守护程序
3:supernode节点已经部署了harbor仓库,可以正常登陆并且pull或push
4:测试环境:
		服务端:IP:115.67.106.132 
		客户端:IP:105.12.72.5

二:部署Dragonfly服务器(SuperNode)

注意:使用以下命令需要使用”docker ps- a”以及“docker images”查看是否存在相同的镜像,如果没有被使用,根据实际情况使用 “docker rm $(docker ps -a -q)”删除所有已经停止的容器或者“docker rmi -f <IMAGE_ID>“删除指定容器,如果提示无法删除,容器正在运行,则使用“docker stop <IMAGE_ID>”停止运行的镜像,再进行删除。

docker run -d --name supernode \
  --restart=always \
  -p 8001:8001 \
  -p 8002:8002 \
  -v /home/admin/supernode:/home/admin/supernode \
  dragonflyoss/supernode:1.0.2 --download-port=8001

三:部署Dragonfly客户端(dfclient)

1:下面的操作应该在客户机上执行
Dragonfly的配置文件/etc/dragonfly默认位于目录中。使用容器部署客户端时,需要将配置文件挂载到容器上。注意:如果路径下没有/etc/dragonfly/dfget.yml 需要自己创建

cat <<EOD > /etc/dragonfly/dfget.yml
nodes:
    - 115.67.106.132
EOD

2:启动蜻蜓客户端

docker run -d --name dfclient \ 
    --restart = always \ 
    -p 65001:65001 \ 
    -v / etc / dragonfly :/ etc / dragonfly \ 
    -v $ HOME /.small-dragonfly:/root/.small-dragonfly \ 
    dragonflyoss / dfclient:1.0.2 --registry https://index.docker.io

3:注意:可以直接执行以上命令,但是值得注意的是以上命令中 ”registry https://index.docker.io ” docker 不支持 https://index.docker.io 以外的 registry,由于我们需要指向自己的仓库,所以不能通过registry 直接配置registry 115.67.106.132:8111/test。

4:我们需要使用docker 的proxy 模式,将Dfdaemon用作Docker Daemon的HTTP代理,首先需要在客户端中添加代理规则 /etc/dragonfly/dfdaemon.yml:

proxies:
- regx: blobs/sha256.*

将docker守护程序的dfdaemon设置为HTTP_PROXY和HTTPS_PROXY /etc/systemd/system/docker.service.d/http-proxy.conf:

[Service]
Environment="HTTP_PROXY=http://127.0.0.1:65001"
Environment="HTTPS_PROXY=http://127.0.0.1:65001"

所有需要 docker pull 的都需要修改
proxy 模式可以给指定的任意 http(s) 请求加速。

四:配置Docker Daemon

1:需要在客户端上修改docker守护程序的配置,在 /etc/docker/daemon.json路径下

{
        "registry-mirrors":["http://127.0.0.1:65001"],
        "insecure-registries": ["115.67.106.132:8111"] 
}

2:重新启动Docker Daemon。

systemctl restart docker

五:验证Dragonfly是否可用

1:在客户端上使用以下命令拉取镜像

docker pull nginx:latest

2:使用以下命令来检查nginx镜像是否通过Dragonfly分发

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

如果上面命令的输出内容如下

2019-03-29 15:49:53.913 INFO sign:96027-1553845785.119 : downloading piece:{"taskID":"00a0503ea12457638ebbef5d0bfae51f9e8e0a0a349312c211f26f53beb93cdc","superNode":"127.0.0.1","dstCid":"127.0.0.1-95953-1553845720.488","range":"67108864-71303167","result":503,"status":701,"pieceSize":4194304,"pieceNum":16}

就代表镜像下载是由Dragonfly完成的。 如果需要确保镜像是通过其他对等节点传输的,则可以执行以下命令:

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

如果以上命令没有输出结果,则镜像不会完成通过其他对等节点的传输。否则,通过其他对等节点完成传输。
以上配置了Dragonfly进行镜像分发,如果需要通过自己的harbor仓库拉取镜像,需要使用以下类似的命令进行pull

docker pull 115.67.106.132:8111/xxx/xxx:latest
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值