docker 上传华为镜像仓库
一.上传镜像
由于docker hub在国外,上传下载速度慢,并且免费的私有镜像仓库只能创建一个,所以尝试选择华为镜像仓库试试。华为镜像仓库介绍地址:https://support.huaweicloud.com/usermanual-swr/swr_01_0009.html
步骤:
1. 打开上面链接地址,通过控制台进入,创建组织名称(hushaoren)
2. 在控制台左边菜单点击镜像资源,点击客户端上传,如下图所示:
3.上传介绍说明地址: https://support.huaweicloud.com/usermanual-swr/swr_01_0011.html
主要是:生成的临时docker login指令有效期为24小时,如下图所示:
上传后,再到控制台查看,如下所示:
二.创建长期登录
资料说明:https://support.huaweicloud.com/swr/index.html
包含AK和SK,我的如下所示:
User Name-----hw59714420
Access Key Id------RBKW3WNYYOLPIS5WFG1X
Secret Access Key ----jLMzNH6bMvegyF956WSntfUipL7o8XxgHwBKXK7Z
在k8s服务器linux系统,执行如下命令获取登录密钥
格式如下:
printf "$AK" | openssl dgst -binary -sha256 -hmac "$SK" | od -An -vtx1 | sed 's/[ \n]//g' | sed 'N;s/\n//'
执行下面命令,获取登录密钥:
printf "RBKW3WNYYOLPIS5WFG1X" | openssl dgst -binary -sha256 -hmac "jLMzNH6bMvegyF956WSntfUipL7o8XxgHwBKXK7Z" | od -An -vtx1 | sed 's/[ \n]//g' | sed 'N;s/\n//'
密钥如下:
c2c8d9571e428ae10b95ee842a7aee688ac5f30606b0f99f4a941cf9817f0190
最后登录
docker login -u cn-east-3@RBKW3WNYYOLPIS5WFG1X -p c2c8d9571e428ae10b95ee842a7aee688ac5f30606b0f99f4a941cf9817f0190 swr.cn-east-3.myhuaweicloud.com
三.k8s服务拉取
1.使用docker pull先拉取安装
docker pull swr.cn-east-3.myhuaweicloud.com/hushaoren/userpermissionapi:v1
2.配置ymal文件
与以前docker hub有一点不同的是 imagePullPolicy: IfNotPresent, 如果本地有就不下拉。
四.版本迭代更新
1.在测试服务器上,生成userpermissionapi:v2镜像
程序将修改后,重新发布文件,覆盖测试服务器opt下的PermissionApi文件夹。生成userpermissionapi:v2镜像
[root@k8s-host PermissionApi]# docker build -t userpermissionapi:v2 .
2.打上tag标签
[root@k8s-host PermissionApi]# docker tag userpermissionapi:v2 swr.cn-east-3.myhuaweicloud.com/hushaoren/userpermissionapi:v2
3.pull到华为镜像云swr服务器
docker push swr.cn-east-3.myhuaweicloud.com/hushaoren/userpermissionapi:v2
推送成功后,如下所示:
4. 修改ymal文件
修改userpermissionservice-rc.ymal文件,重新覆盖k8s服务器opt目录上的,主要修改如下:
image: swr.cn-east-3.myhuaweicloud.com/hushaoren/userpermissionapi:v2
5. 更新Pod
#替换关联的yaml文件
[root@k8s-host opt]# kubectl replace -f userpermissionservice-rc.ymal
[root@k8s-host opt]# kubectl get pod
#删除该pod,通过yaml文件重新生成新的pod
[root@k8s-host opt]# kubectl delete pod userpermissionapi-ggtv6
pod "userpermissionapi-ggtv6" deleted
删除后会,k8s会去重新拉取 userpermission-svc.ymal文件生成新的pod,此时更为了v2, 这一切都是自动的。检验如下所示 kubectl describe pod xxx:
pod更新后,之前关联的镜像容器会自动停掉,通过docker ps 来查看。 旧的镜像文件,通过docker images 来查看。 可以删除一些无用的镜像或容器。