如何为私人注册表登录凭据创建“RegistryAuth”

时间:2017-03-03 23:35:15

标签: go docker docker-registry

我使用以下命令创建了一个私人注册表:

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天,任何帮助都会很棒

1 个答案:

答案 0 :(得分:5)

auth := types.AuthConfig{
    Username: cfg.User,
    Password: cfg.Passwd,
}
authBytes, _ := json.Marshal(auth)
authBase64 := base64.URLEncoding.EncodeToString(authBytes)

https://github.com/leopoldxx/godocker/blob/master/docker.go