背景:
公司为了实现灰度发布,先需要开发一套系统,其中一部分就是平台实现操作docker镜像!
功能:
1、去docker私有仓库(另一个服务器)拉取镜像到服务器(坑多!)
2、根据镜像生成容器
3、启动、停止容器等简单类似操作
4、业务流程图
我的环境
Linux:centos7.5
docker: V1.13
docker api:V1.25
搞起
1去docker私有仓库(另一个服务器)拉取镜像到服务器(坑多!)
先看创建镜像的官网怎么说的:https://docs.docker.com/engine/api/v1.25/#operation/ImageCreate
连个例子都没用,参数该怎么填全靠猜!!!!我猜了2天。。。。。
怎么猜?
先是瞎猜,然后是用我前面说的docker网页管理工具portainer 的使用,调试看它的请求,
portainer 的使用:https://www.jianshu.com/p/1e3e12191516
1.1我先是获取docker官方的镜像,可以下载
直接 post: http://192.168.0.243:2375/v1.25/images/create?fromImage=busybox&tag=1.2
1.2但我的是私有仓库啊,结果一直报错:
{"status":"Trying to pull repository docker.io/library/busybox ... "}
{"errorDetail":{"message":"manifest for docker.io/busybox:1.2 not found"},"error":"manifest for docker.io/busybox:1.2 not found"}
意思是找不到镜像,然后仔细看官网的接口说需要在Header里加这个
通过不断试错,我把这三个参数{"serveraddress":"hub.baool.com","username":"bool","password":"bel4321"}
用base64加密放在header的“X-Registry-Auth”里成功拉取私有仓库的镜像!!!
注意:这里post参数不能写在body里,只能写在url拼在一起,奇怪吧!!!