百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>服务器> docker4 dotnet使用Azure云存储构建高速 Docker registry
分享文章到:

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

发布时间:01/15 来源: 浏览: 关键词:
Windows Azure是微软基于云计算的操作系统,现在更名为“Microsoft Azure”,和Azure Services Platform一样,是微软“软件和服务”技术的名称,下面来看一篇关于docker4 dotnet使用Azure云存储构建高速 Docker registry的例子。
使用Docker来构建应用程序最常见的操作就是 docker run 或者 docker pull了,但是由于众所周知的原因,在国内想要高速稳定的获取docker hub上面的资源并不是件容易的事情,虽然国内的一些docker社区也提供了所谓的加速器,但是实测结果并不理想。今天这篇文章就给大家介绍一下怎么借助Azure Storage来搭建一个高速的私有 Docker Hub (Registiry)。

docker4dotnet 4 使用Azure云存储构建高速 Docker registry

一图解千言,基本上一看你就明白了。我们利用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的帐号,建议把这个存储放置在北京或者上海;如果只有国际版的帐号,放在香港速度也是不错的。

docker4dotnet 4 使用Azure云存储构建高速 Docker registry
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共享给团队使用了,但是不要忘记加入验证。

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有2人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板