我使用以下命令创建了一个私人注册表:
docker run -d -p 5000:5000 --restart = always --name registry -e REGISTRY_STORAGE_DELETE_ENABLED = true registry:2
我正在尝试使用Golang docker客户端API将图像推送到此注册表 - > ImagePush
func(cli * Client)ImagePush(ctx context.Context,image string,options types.ImagePushOptions)(io.ReadCloser,error)
当我放大ImagePushOptions时,我看到结构是
输入ImagePullOptions struct { 所有的布尔 RegistryAuth字符串// RegistryAuth是注册表的base64编码凭据 PrivilegeFunc RequestPrivilegeFunc }
AnyIdea如何创建RegistryAuth字符串
我尝试过以下操作:
输入AuthArgs struct { 用户名字符串json:“username” 密码字符串json:“密码” 电子邮件字符串json:“email” ServerAddress字符串json:“serveraddress” }
func(){
m:= AuthArgs {“docker”,“docker”,“”,“localhost:5000”} b,错误:= json.Marshal(m)
fmt.Println(串(b))的 encodeStr:= base64.StdEncoding.EncodeToString(b)
refStr:=“localhost:5000 /”+ image +“:”+ tag fmt.Println(refStr) resp,err:= cli.ImagePush(ctx,refStr,types.ImagePushOptions {RegistryAuth:encodeStr}) 我被困3天,任何帮助都会很棒
答案 0 :(得分:5)
auth := types.AuthConfig{
Username: cfg.User,
Password: cfg.Passwd,
}
authBytes, _ := json.Marshal(auth)
authBase64 := base64.URLEncoding.EncodeToString(authBytes)