1 前言
在使用k8s的过程中,经常会遇到拉取k8s.gcr.io仓库的镜像,但这个仓库在国内是无法拉取相关镜像的。所以这里介绍使用阿里云结合github的方式进行镜像同步。
前提条件:
- 阿里云镜像仓库账号
- GitHub账号
2 步骤
2.1 GitHub创建仓库
比如要这里要同步k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.1.1镜像。
在自己的GitHub账户上创建一个名为kube-state-metircs
的项目,项目名称没什么影响。然后在项目中添加名为Dockerfile的文件,文件内容如下:
FROM k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.1.1
保存后提交。如下图所示
2.2 阿里云相关操作
登录阿里云容器镜像服务:https://cr.console.aliyun.com/
点击个人实例,进入下图
完成后点击下一步
关联完成后点击创建镜像仓库,然后跳到下一个页面,如下图
设置完成后点击确定,然后配置规则
构建规则添加完成后点击确定,在下图中点击立即构建
构建完成后在如下的位置可以找到镜像的使用方式
2.3 镜像使用指南
1 登录阿里云Docker Registry
$ docker login --username=your_login_username registry.cn-beijing.aliyuncs.com
用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
您可以在访问凭证页面修改凭证密码。
2 从Registry中拉取镜像
$ docker pull registry.cn-beijing.aliyuncs.com/vodaka_tux/kube-state-metrics-test:[镜像版本号]
3 将镜像推送到Registry
$ docker login --username=vodaka**** registry.cn-beijing.aliyuncs.com
$ docker tag [ImageId] registry.cn-beijing.aliyuncs.com/vodaka_tux/kube-state-metrics-test:[镜像版本号]
$ docker push registry.cn-beijing.aliyuncs.com/vodaka_tux/kube-state-metrics-test:[镜像版本号]
请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
4 选择合适的镜像仓库地址
从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。
如果您使用的机器位于VPC网络,请使用 registry-vpc.cn-beijing.aliyuncs.com 作为Registry的域名登录。
5 示例
使用”docker tag”命令重命名镜像,并将它通过专有网络地址推送至Registry。
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
registry.aliyuncs.com/acs/agent 0.7-dfb6816 37bb9c63c8b2 7 days ago 37.89 MB
$ docker tag 37bb9c63c8b2 registry-vpc.cn-beijing.aliyuncs.com/acs/agent:0.7-dfb6816
使用 “docker push” 命令将该镜像推送至远程。
$ docker push registry-vpc.cn-beijing.aliyuncs.com/acs/agent:0.7-dfb6816