背景:
公司為了實(shí)現(xiàn)灰度發(fā)布邑遏,先需要開發(fā)一套系統(tǒng)佣赖,其中一部分就是平臺(tái)實(shí)現(xiàn)操作docker鏡像!
功能:
1记盒、去docker私有倉(cāng)庫(kù)(另一個(gè)服務(wù)器)拉取鏡像到服務(wù)器(坑多T鞲颉)
2、根據(jù)鏡像生成容器
3纪吮、啟動(dòng)俩檬、停止容器等簡(jiǎn)單類似操作
4、業(yè)務(wù)流程圖
我的環(huán)境
Linux:centos7.5
docker: V1.13
docker api:V1.25
搞起
1去docker私有倉(cāng)庫(kù)(另一個(gè)服務(wù)器)拉取鏡像到服務(wù)器(坑多D朊恕)
先看創(chuàng)建鏡像的官網(wǎng)怎么說的:https://docs.docker.com/engine/api/v1.25/#operation/ImageCreate
連個(gè)例子都沒用棚辽,參數(shù)該怎么填全靠猜!1取G辍!我猜了2天熙尉。估盘。。骡尽。遣妥。
怎么猜?
先是瞎猜攀细,然后是用我前面說的docker網(wǎng)頁管理工具portainer 的使用箫踩,調(diào)試看它的請(qǐng)求爱态,
portainer 的使用:http://www.reibang.com/p/1e3e12191516
1.1我先是獲取docker官方的鏡像,可以下載
直接 post: http://192.168.0.243:2375/v1.25/images/create?fromImage=busybox&tag=1.2
1.2但我的是私有倉(cāng)庫(kù)啊境钟,結(jié)果一直報(bào)錯(cuò):
{"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"}
意思是找不到鏡像锦担,然后仔細(xì)看官網(wǎng)的接口說需要在Header里加這個(gè)
通過不斷試錯(cuò),我把這三個(gè)參數(shù){"serveraddress":"hub.baool.com","username":"bool","password":"bel4321"}
用base64加密放在header的“X-Registry-Auth”里成功拉取私有倉(cāng)庫(kù)的鏡像?鳌6从妗!
注意:這里post參數(shù)不能寫在body里缚态,只能寫在url拼在一起磁椒,奇怪吧!C德浆熔!