背景
最近需要再阿里云上面搭建一套产品环境,因为产品的镜像仓库仍然在 gitlab 上面,导致在阿里云拉取和更新镜像时候全靠人品。看到阿里云上面有自己的仓库,尝试先拉取镜像到本地,再推送到阿里云的镜像仓库来解决镜像拉取缓慢的问题。
具体步骤
1. 在阿里云创建镜像仓库
我们先到容器镜像的控制台界面,先选择镜像仓库节点,建议选择和自己集群一个地区的节点

2.如果是私有仓库需要先设置密码

3.创建镜像仓库,通常一个项目对应一个镜像仓库

4.选择类型,这里我们选择本地仓库

5. 创建好仓库之后,在基本信息里面会有本地上传具体操作步骤和三种网络地址(公网,专有,内网)

6. 根据页面提示,进行命令行操作,赋值命令修改即可
- 先 docker login,此处的密码是之前第二步设定的密码。
- 从自己的 gitlab 仓库拉取镜像到本地,docker pull your_gitlab_image_url
- 打 tag docker tag imageid your_alibaba_registry_url:镜像版本号
- push 到阿里云仓库 docker push your_alibaba_registry_url:镜像版本号
7. 因为用的是 k8s 集群,需要创建一个 secret,才能从私有仓库拉取镜像更新
- 在同一个命名空间下面创建 secret key。
kubectl -n your_namespace create secret docker-registry your_secret_name --docker-server=your_registry_URL --docker-username=你的阿里云 id --docker-password=your_pwd
- 在配置文件的 imagePullSecret 引用刚刚创建的 your_secret_name 即可
8.为了开发更快速的更新镜像到阿里云,把第 6 步的拉取镜像和推送用 python 做了自动化,简直不要太方便。