docker4 dotnet使用Azure云存储构建高速 Docker registry

使用Docker来构建应用程序最常见的操作就是 docker run 或者 docker pull了,但是由于众所周知的原因,在国内想要高速稳定的获取docker hub上面的资源并不是件容易的事情,虽然国内的一些docker社区也提供了所谓的加速器,但是实测结果并不理想。今天这篇文章就给大家介绍一下怎么借助Azure Storage来搭建一个高速的私有 Docker Hub (Registiry)。

云存储构建高速 Docker registry" src="http://p9.pstatp.com/large/c4f00074dcab537f39c">

一图解千言,基本上一看你就明白了。我们利用Docker Registry 提供的 Azure Storage 存储模式,将2个不同的registry 容器连接到同一个blob存储上,其中一个registry容器运行在Azure香港的数据中心,另外一个运行在我本地docker-machine中。需要docker pull的时候,我们使用香港的容器进行操作,并push到本地的registry中;这个操作其实会把镜像上传至Azure的blob存储中;本地在pull镜像的时候就可以直接从Azure存储中下载了,速度非常快,关键是更加稳定。

搭建这个环境也很简单:

1. 使用docker-machine 在香港的Azure数据中心中创建一台容器化主机

docker-machine create --driver azure --azure-subscription-id {sub-id} --azure-open-port 80 --azure-location "EastAsia" {machine-name}

2. 在Azure Storage中创建存储帐号,获取访问密钥

如果你有中国版Azure的帐号,建议把这个存储放置在北京或者上海;如果只有国际版的帐号,放在香港速度也是不错的。

3. 在香港和本地的docker-machine中分别使用同样的命令启动regsitry容器

macOS/linux 脚本

docker run -d -p 5000:5000 \
 -e REGISTRY_STORAGE=azure \
 -e REGISTRY_STORAGE_AZURE_ACCOUNTNAME="{Account Name}" \
 -e REGISTRY_STORAGE_AZURE_ACCOUNTKEY="{access key}" \
 -e REGISTRY_STORAGE_AZURE_CONTAINER="{storage container name}" \
 -e REGISTRY_STORAGE_AZURE_REALM="core.chinacloudapi.cn" \
 --name=registry \
 --restart=always \
 registry:2
Windows脚本

docker run -d -p 5000:5000 ^
 -e REGISTRY_STORAGE=azure ^
 -e REGISTRY_STORAGE_AZURE_ACCOUNTNAME="{Account Name}" ^
 -e REGISTRY_STORAGE_AZURE_ACCOUNTKEY="{access key}" ^
 -e REGISTRY_STORAGE_AZURE_CONTAINER="{storage container name}" ^
 -e REGISTRY_STORAGE_AZURE_REALM="core.chinacloudapi.cn" ^
 --name=registry ^
 --restart=always ^
 registry:2
注意以上我所使用的是中国版Azure存储帐号,如果使用国际版,请更新 REGISTRY_STORAGE_AZURE_REALM 这个参数。

4. 使用脚本一次性完成镜像拉取

macOS或者Linux的脚本 pull-image.sh

 echo There are $# arguments to $0: $*
 echo Pulling image $3 from docker hub via azure storage
 echo Usage
 echo "-------------------------------------------"
 echo "$1 is the offshore docker-machine name"
 echo "$2 is the local docker-machine name"
 echo "$3 is the image name"
 echo "-------------------------------------------"
 
 echo "-> switch to $1"
 eval $(docker-machine env $1)
 echo "-> pulling image $3"
 docker pull $3
 echo "-> tag image $3 and push to local registry"
 docker tag $3 localhost:5000/$3
 docker push localhost:5000/$3
 echo "-> Pull from registry in localhost into $2"
 eval $(docker-machine env $2)
 docker pull localhost:5000/$3
 docker tag localhost:5000/$3 $3
 docker rmi localhost:5000/$3
 echo "-> Done!"
Windows 脚本 pull-image.cmd

 echo off
 echo Usage
 echo "-------------------------------------------"
 echo "%1 is the offshore docker-machine name"
 echo "%2 is the local docker-machine name"
 echo "%3 is the image name"
 echo "-------------------------------------------"
 
 echo "-> switch to %1"
 @FOR /f "tokens=*" %i IN ('docker-machine env %1') DO @%i
 echo "-> pulling image %3"
 docker pull $3
 echo "-> tag image %3 and push to local registry"
 docker tag %3 localhost:5000/%3
 docker push localhost:5000/%3
 echo "-> Pull from registry in localhost into %2"
 @FOR /f "tokens=*" %i IN ('docker-machine env %2') DO @%i
 docker pull localhost:5000/%3
 docker tag localhost:5000/%3 %3
 docker rmi localhost:5000/%3
 echo "-> Done!"
当然,你也可以把这个registry容器运行在云端的docker-machine里面,这样你就可以把这个registry共享给团队使用了,但是不要忘记加入验证。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索azure
, 存储
docker
docker registry、docker registry v2、docker registry ui、docker registry api、docker registry 管理,以便于您获取更多的相关知识。

时间: 2024-09-22 03:06:19

docker4 dotnet使用Azure云存储构建高速 Docker registry的相关文章

微软玩“追随” 削减Azure云存储成本

云计算的价格持续降低,但是对于IT部门的影响充其量就是少有波及.微软在亚马逊云服务(AWS)和谷歌降低了成本之后,也降低了Windows Azure云存储的成本. 然而,很多用户和分析师认为这次降价只是厂商们竞争的价格战而已.对于IT专业人士而言好消息在于云成本持续降低,但是三大厂商几乎同时将同时降价,对于云存储市场的影响并不是很大. 微软12月份为用户削减公有云产品存储成本差不多达到28%,根据周三该公司Windows Azure团队的博客中所述. "不管数字如何,微软的价格削减很少或者几乎没

微软调低Azure云存储价格至14美分

微软已经将其Azure云存储的价格降低了一美分,降价后的Azure云存储(每GB14美分)在价格上将会与Amazon S3处于竞争地为. 新的价格主要适用于Azure Blob和Table存储,不过其在使用模式上同Amazon并不相同.微软的定价策略是根据总容量收费,而Amazon则是步进式的.也就是说,Amazon的策略是,用户将某一容量用到极限后,下一个数据块开始将以新的且更低的计费模式计算价格. 微软将新的定价策略将会更为接近Amazon S3,但仍然会显得稍贵. 例如,美国用户在Amaz

微软削减Azure云存储服务价格 挑战亚马逊

据美国科技网站1月24日报道,微软并不打算置身于云存储竞争之外.该公司24日博客发出消息,称将下调Azure云存储服务费用,并且低于亚马逊的AWS储存服务. 资料图 微软Windows Azure公共云服务商业规划及策略总经理史蒂芬•马丁(Steven Martin)写道,"我们也制定了新的价格,并在全球范围生效,这意味着Azure存储服务在许多地区都会比AWS便宜." 下调后的价格将于3月13日开始执行,适用于Azure的Block Blobs Storage和Locally Red

azure-Azure 云存储 URL 转换问题

问题描述 Azure 云存储 URL 转换问题 有个问题想咨询下: 目前想把公司门户网站上的图片,视频等数据迁移到Azure云存储上.在原本地网站服务器上对网站上的图片,视频等数据都会有一个固定的URL链接,且如果上传到在Azure云存储上后也会对每条数据都生成一个新URL链接.但是因为想减少网站代码的改动,想问下能不能达到这样的效果: 在不改动原有本地站点图片a的URL的情况下,客户访问原先本地站点图片a时会自动引用定向映射到Azure存储上a的数据.如果前者可行那么对图片a做了修改会不会影响

NAS存储系统架构云存储的方案讲解

 对于一个成功的.具有极高可扩展性的NAS存储系统来说,要想实现NAS存储系统架构云存储解决方案需要什么? 云存储的概念始于Amazon提供的一项服务(S3),同时还伴随着其云计算产品(EC2).在Amazon的S3的服务背后,它还管理着多个商品硬件设备,并捆绑着相应的软件,用于创建一个存储池.新兴的网络公司已经接受了这种产品,并提出了云存储这个术语及其相应的概念. 云存储是一种架构,而不是一种服务.你是否拥有或租赁了这种架构是一个次要问题.从根本上来看,通过添加标准硬件和共享标准网络(公共互联

区分云存储、存储云以及存储云服务

随着Web2.0的应用,个人不再是简单的互联网内容的消费者同时也是互联网内容的直接创造者:电商<如淘宝网).SNS(如微博>.影视(如优酷)等就是最好的例证.这种自服务的理念结合着最新的云计算理念.3G等宽带技术带领人们进入一个全新的服务时代. 在这个全新的服务时代里人们对于数据.信息.处理的使用从传统的买断方式向租用模式改变,从而衍生出广大的云服务供应<Amazon的基础资源云服务.SalesForce的企业CRM云服务.Google个人云服务等). 之所以出现这么多的云服务,是由于个

NAS存储系统架构云存储的挑战

云存储的概念始于Amazon提供的一项服务(S3),同时还伴随着其云计算产品(EC2).在Amazon的S3的服务背后,它还管理着多个商品硬件设备,并捆绑着相应的软件,用于创建一个存储池.新兴的网络公司已经接受了这种产品,并提出了云存储这个术语及其相应的概念. 云存储是一种架构,而不是一种服务.你是否拥有或租赁了这种架构是一个次要问题.从根本上来看,通过添加标准硬件和共享标准网络(公共互联网或私有的企业内部网)的访问,云存储很容易扩展云容量和性能.事实证明,管理数百台服务器,使得其感觉上去就像是

私有存储云如何构建?

   构建内部的云存储必须考虑到弹性.选择正确的平台.支持工作流,以及批量部署和跟公有云的集成. 随着时间的推移,存储即服务的交付进展惊人.如今,公有云,如Amazon Web Services和Microsoft Azure,都提供了内部以及外部连接的按需分配的对象存储,以及块和文件存储,用于内部分配给计算实例.这种运维的灵活性在数据中心里很引人注意,比起传统的存储部署方式,它提供了更大的便捷性和敏捷性. 如何构建自己的私有存储云呢?我们首先退后一步,思考一下云计算到底意味着什么.云标准定义包

私有存储云如何构建?

构建内部的云存储必须考虑到弹性.选择正确的平台.支持工作流,以及批量部署和跟公有云的集成. 随着时间的推移,存储即服务的交付进展惊人.如今,公有云,如Amazon Web Services和Microsoft Azure,都提供了内部以及外部连接的按需分配的对象存储,以及块和文件存储,用于内部分配给计算实例.这种运维的灵活性在数据中心里很引人注意,比起传统的存储部署方式,它提供了更大的便捷性和敏捷性. 如何构建自己的私有存储云呢?我们首先退后一步,思考一下云计算到底意味着什么.云标准定义包括如下