这是坚持技术写做计划(含翻译)的第12篇,定个小目标999,每周最少2篇。php
吐槽一下,最近有点懒,竟然欠了4篇,后续会慢慢补上。html
若是说,微服务和容器是最佳拍档,那么模块多实例是确定少不了。
假如没有使用相似 Google jib 等手段进行镜像分层(利用镜像缓存),势必会形成前端
关于Google jib能够参见我另一篇 加速和简化构建Docker(基于Google jib) ,本文只介绍 Dragonfly + dfdaemonnode
Dragonfly是阿里巴巴自研并开源的一款基于P2P协议的文件分发系统。除了使用 dfget 进行文件下载外,还支持dfdaemon 进行docker镜像下载。git
关于Dragonfly的镜像分发的原理性说明,可参见 直击阿里双11神秘技术:PB级大规模文件分发系统“蜻蜓” ,文中介绍很详细,此处很少说明。程序员
google jib 和 Dragonfly 系列文章github
类型 | 系统 | ip | docker version |
---|---|---|---|
supernode | Ubuntu Server 16.04.6 LTS X64 | 192.168.0.44 | 17.06.2~ce-0~ubuntu |
clinet1 | Ubuntu Server 16.04.6 LTS X64 | 192.168.0.40 | 17.06.2~ce-0~ubuntu |
clinet2 | Ubuntu Server 16.04.6 LTS X64 | 192.168.0.45 | 17.06.2~ce-0~ubuntu |
注意:
若是是实验目的,建议用Vmware,而且在关键操做时备份快照(好比,刚装完环境),这样可以及时,干净的还原现场,节省每次重装系统致使的时间浪费docker
安装json
吐槽一下Dragonfly的文档,简直让人不知因此。结合issues + 钉钉群内请教,遂整理出最简使用文档。 ubuntu
可选:给supernode增长docker加速器,能够参考 cr.console.aliyun.com/cn-hangzhou… ,若是不须要,能够去掉。
$ cat <<EOD >/etc/docker/daemon.json
{
"registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
EOD
$ systemctl restart docker
复制代码
$ docker run --name dragonfly-supernode --restart=always -d -p 8001:8001 -p 8002:8002 -v /data/dragonfly/supernode:/home/admin/supernode registry.cn-hangzhou.aliyuncs.com/dragonflyoss/supernode:0.3.0 -Dsupernode.advertiseIp=192.168.0.44
复制代码
说明:
$ cat <<EOD >/etc/dragonfly.conf
[node]
address=192.168.0.44
EOD
$ docker run --name dragonfly-dfclient --restart=always -d -p 65001:65001 -v /root/.small-dragonfly:/root/.small-dragonfly -v /etc/dragonfly.conf:/etc/dragonfly.conf dragonflyoss/dfclient:v0.3.0 --registry=https://xxx.mirror.aliyuncs.com --ratelimit 100M
$ cat <<EOD >/etc/docker/daemon.json
{
"registry-mirrors": ["http://127.0.0.1:65001"]
}
EOD
$ systemctl restart docker
复制代码
说明:
--registry https://xxx.xx.x
不能算是坑,可是,对于docker不熟悉的,每每会不知能不能用加速器。-ratelimit
而实际是 --ratelimit
,若是不改此参数,会发现,下载很慢。$ docker pull anjia0532/kubeflow-images-public.tensorflow-1.6.0-notebook-gpu:v20180604-b3733835
复制代码
能够经过 iftop
等软件,查看带宽使用状况判断是否生效,也能够经过查看日志来判断。
error pulling image configuration: received unexpected HTTP status: 502 Bad Gateway
须要结合实际状况,配置相关参数,好比,文件失效时间,用来平衡文件有效期及磁盘使用量。
山东济南的小伙伴欢迎投简历啊 加入咱们 , 一块儿搞事情。
长期招聘,Java程序员,大数据工程师,运维工程师,前端工程师。