使用REST API将Docker镜像推送到私有注册表时,X-Registry-Auth头的内容应该是什么?每个使用Docker API推送到私有注册表,需要一个X-Registry-Auth头.https://groups.google.com/forum/#!topic/docker-user/vXcA8fsCNZM建议该值应为以下格式的base64编码JSON字符串:
{'username': string, 'password': string, 'email': string, 'serveraddress' : string}
Run Code Online (Sandbox Code Playgroud)
设置合适的环境变量后,我做了:
XRA=`echo "{\"username\": \"${USERNAME}\", \"password\": \"${PASSWORD}\", \"email\": \"${EMAIL_ADDRESS}\", \"serveraddress\" : \"${SERVER_ADDRESS}\"}" | base64 --wrap=0`
curl -v --request POST --header "X-Registry-Auth: $XRA" http://$DOCKER_HOST/v1/images/$REGISTRY/$NAMESPACE/$REPOSITORY?tag=$TAG
Run Code Online (Sandbox Code Playgroud)
得到403 Forbidden回应.
也许问题只是我不知道价值应该是什么.我怎样才能确定它们?Docker似乎有办法; sudo docker push $REGISTRY/$NAMESPACE/$REPOSITORY:$TAG工作得很好.
我试图通过REST API创建和启动容器.也就是说,使用以下API:
curl --http1.0 --request POST --header "Content-Type: application.json" http://$DOCKER_HOST:4243/containers/create --data @create.json
Run Code Online (Sandbox Code Playgroud)
其中create.json是所需属性的JSON文件.我想为容器指定一个特定的名称.可以通过docker CLI使用run命令中的--name参数执行此操作:
docker run --name "my_name" my_image
Run Code Online (Sandbox Code Playgroud)
创建容器的文档(https://docs.docker.com/reference/api/docker_remote_api_v1.15/#create-a-container)提供了一个示例JSON有效负载.未列出名称属性.我尝试了以下名称属性的变体:
"Name": "my_name"
"Names": [ "my_name" ]
"Names": [ "/my_name" ]
"Name": "/my_name"
Run Code Online (Sandbox Code Playgroud)
一切都无济于事.变体的灵感来自查询结果:
curl --http1.0 http://$DOCKER_HOST:4243/containers/json
Run Code Online (Sandbox Code Playgroud)
返回包含以下内容的条目:
"Names":["/elegant_mccarthy"]
Run Code Online (Sandbox Code Playgroud)