使用github action 拉取国外docker镜像
- k8s部署经常用到国外镜像,如果本地无法拉取可以考虑使用github action环境 - github action的ci服务器在国外,不受中国防火墙影响- github action 自带docker命令- 运行时直接将你仓库代码拉取下来
步骤
- 你的国内docker仓库,拿到docker login的命令(这个根据不同的云获取,建议不要用dockerhub)
- 新建一个github的仓库
- 创建文件 .github/workflows/docker-build.yml
name: Docker Build
on:[push]jobs:build:runs-on: ubuntu-latest
steps:-uses: actions/checkout@v2
-name: Log in to Docker Hub
run: docker login xxx; bash github_push_docker.sh
- 上面是github action的流水线,docker login 指令请自行替换
- 然后请在项目根路径创建 github_push_docker.sh ,内容如下
#!/bin/bashpull_registry="gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd"# 目标仓库push_registry="你的云/你的仓库"# 例子:swr.cn-south-1.myhuaweicloud.com/myrepoimage1="controller:v0.56.0@sha256:fc5669e1bbabbf24b0ee4591ff20793643d778942e91ae52b3f7cca26d81a99b"image2="nop:v0.56.0@sha256:4e627be53f78f30f73084ea0695d97397930d6f12d4cfab28d97b1aa57842881"images=($image1$image2)foriin"${!images[@]}"doimage=`echo ${images[$i]}|awk -F'@''{print $1}'`
docker pull ${pull_registry}/${image}
docker tag ${pull_registry}/${image}${push_registry}/${image}
docker images;
docker push ${push_registry}/${image}done
- 注意:当前仓库任何代码变更都将触发流水线运行
github_push_docker.sh 的使用
- pull的仓库(国外)请保持一致,结尾不要加 / 号
- 镜像有多少个,就弄多少个变量。如: image1 、image2、 image3
- 创建变量后加入 images 数组 images=($image1 $image2 $image3) ,模仿格式即可
- 脚本自动处理 镜像 @ 后面的 sha值,因为当你使用sha值拉回来的镜像是没有tag的,你push就很麻烦了
总结
- 这是基于github action的拉取镜像方式,本质就是运行了一个简单的脚本。理论上你可以用github的机器做任何事情,比如更复杂的cicd流程
本文转载自: https://blog.csdn.net/qq_42938493/article/details/135833707
版权归原作者 丁佑强 所有, 如有侵权,请联系我们删除。
版权归原作者 丁佑强 所有, 如有侵权,请联系我们删除。