首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过docker hub api创建docker私有仓库?

如何通过docker hub api创建docker私有仓库?
EN

Stack Overflow用户
提问于 2015-04-24 17:56:09
回答 2查看 910关注 0票数 3

我可以通过docker hub api创建公共存储库。如何才能实现私有存储库?

代码语言:javascript
复制
url='http://index.docker.io/v1/repositories/(username)/(new_repo_name)/'
header = {'content-type': 'application/json','Accept': 'application/json','X-Docker-Token': 'true'}
data = [{"id": "1020903f808f"}]
auth=HTTPBasicAuth(username,password)
requests.put(url,headers=header, auth=auth,data=data)

我的形象是:

代码语言:javascript
复制
(username)/(new_repo_name)       latest             1020903f808f 
EN

回答 2

Stack Overflow用户

发布于 2017-01-03 01:04:21

这在任何地方都没有文档记录,但是通过在浏览器中检查请求,我设法使以下代码工作。它需要一个JWT令牌。一个简单快捷的方法是使用Chrome登录,然后从调试视图(ctrl+shift+i)复制粘贴。

代码语言:javascript
复制
class DockerHub(object):
def __init__(self, url=None, version='v2', headers=None, jwt_token=None):
    self.version = version
    self.url = '{0}/{1}'.format(url or 'https://hub.docker.com', self.version)
    self.headers = headers or {}
    if jwt_token:
        self.headers['Authorization'] = 'JWT ' + jwt_token

def create_private_docker_hub_repo(self, reponame, orgname, jwt_token, summary=None, description=None):
    payload = {
        'description': summary or '',
        'full_description': description or '',
        'is_private': 'true',
        'name': reponame,
        'namespace': orgname
    }
    resp = requests.post(
        self.url + '/repositories/',
        data=payload,
        headers=self.headers,
    )
    return resp.json()

def set_group_permission_for_repo(self, repo, orgname, groupname, permission='read'):
    group_id = {it['name']: it['id'] for it in self.get_org_groups(orgname)}[groupname]
    if not permission in ('write', 'read'):
        raise Exception('permission must be write or read')
    resp = requests.post(
        'https://hub.docker.com/v2/repositories/{org}/{repo}/groups/'.format(
            org=orgname,
            repo=repo
        ),
        data={'group_id': group_id, 'permission': permission},
        headers=self.headers
    )
    return resp.json()

def get_org_groups(self, orgname):
    resp = requests.get(
        'https://hub.docker.com/v2/orgs/{org}/groups/?page_size=100'.format(org=orgname),
        headers=self.headers,
    )
    return resp.json()['results']
票数 4
EN

Stack Overflow用户

发布于 2020-03-05 23:48:30

使用curl (在shell脚本中很有用):

代码语言:javascript
复制
TOKEN=$(curl -s -H "Content-Type: application/json" -X POST -d '{"username": "'${USER}'", "password": "'${PASS}'"}' https://hub.docker.com/v2/users/login/ | jq -r .token)

curl -s -H "Authorization: JWT ${TOKEN}" "https://hub.docker.com/v2/repositories/" \
 --data 'description=test' \
 --data 'full_description=full-description' \
 --data 'is_private=false' \
 --data 'name=test' \
 --data "namespace=${USER}"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29844420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档