文档章节

Docker搭建基于Token认证的的Registry服务

HelloEric
 HelloEric
发布于 2017/04/26 15:53
字数 478
阅读 317
收藏 0

搭建Token认证的Registry服务

1. 创建目录


mkdir -p {/data/volume/{auth_server/{config,ssl},docker_registry/data}}

2. 拷贝认证文件

如果有现成的认证文件,将文件拷贝至ssl文件夹下,文件包括( server.key, server.pem )

如果没有认证文件,使用下面的指令生成临时文件


 openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.pem

3. 配置认证服务的配置文件

在目录(/data/volumes/auth_server/config)下创建配置文件(auth_config.yml)



server:  # Server settings.

  # Address to listen on.

  addr: ":5001"

  # TLS certificate and key.

  certificate: "/ssl/server.pem"

  key: "/ssl/server.key"



token:  # Settings for the tokens.

  issuer: "Auth Service"  # Must match issuer in the Registry config.

  expiration: 900



# Static user map. 

users:

  # Password is specified as a BCrypt hash. Use htpasswd -B to generate.

  "admin":

    password: "$2y$05$B.x046DV3bvuwFgn0I42F.W/SbRU5fUoCbCGtjFl7S33aCUHNBxbq"

  "reader":

    password: "$2y$05$xN3hNmNlBIYpST7UzqwK/O5T1/JyXDGuJgKJzf4XuILmvX7L5ensa"

  "": {}  # Allow anonymous (no "docker login") access.



acl:

  # Admin has full access to everything.

  - match: {account: "admin"}

    actions: ["*"]

  - match: {account: "reader", name: "nginx"}

    actions: ["pull"]

4. 搭建registry和auth服务

采用compose模式搭建,创建compose文件(registry-auth.yml)


dockerauth:

  image: cesanta/docker_auth:stable

  container_name: docker_auth

  ports:

    - "5001:5001"

  volumes:

    - /data/volumes/auth_server/config:/config:ro

    - /var/log/docker_auth:/logs

    - /data/volumes/auth_server/ssl:/ssl

  command: /config/auth_config.yml

  restart: always



registry:

  image: registry:2

  container_name: docker_registry

  ports:

    - "5000:5000"

  volumes:

    - /data/volumes/auth_server/ssl:/ssl

    - /data/volumes/docker_registry/data:/var/lib/registry

  restart: always

  environment:

    - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/var/lib/registry

    - REGISTRY_AUTH=token

    - REGISTRY_AUTH_TOKEN_REALM=https://registry.sky.com:5001/auth

    - REGISTRY_AUTH_TOKEN_SERVICE="Docker registry"

    - REGISTRY_AUTH_TOKEN_ISSUER="Auth Service"

    - REGISTRY_AUTH_TOKEN_ROOTCERTBUNDLE=/ssl/server.pem

    - REGISTRY_HTTP_TLS_CERTIFICATE=/ssl/server.pem

    - REGISTRY_HTTP_TLS_KEY=/ssl/server.key

执行指令


docker-compose -f registry-auth.yml up

5. 在线测试

  • 找一个安装了docker的服务器

  • 执行登录指令docker login registry.sky.com:5000

  • 输入用户名和密码


Username (reader): 

Password: 

Login Succeeded

  • 根据前面的权限配置,reader用户只有pull权限,无法push操作

$ docker tag nginx registry.sky.com:5000/nginx

$ docker push registry.sky.com:5000/nginx

The push refers to a repository [registry.sky.com:5000/nginx]

5f70bf18a086: Preparing 

bbf4634aee1a: Preparing 

64d0c8aee4b0: Preparing 

4dcab49015d4: Preparing 

unauthorized: authentication required

测试成功,无法提交

  • 重新采用admin用户登录

docker push registry.sky.com:5000/nginx     

The push refers to a repository [registry.sky.com:5000/nginx]

5f70bf18a086: Pushed 

bbf4634aee1a: Pushed 

64d0c8aee4b0: Pushed 

4dcab49015d4: Pushed 

latest: digest: sha256:e2ba8f461c877d3bbe0294dcce6398b085a19117d73e0ae1d75f9b412cab8c2e size: 1978

参考文档

https://the.binbashtheory.com/creating-private-docker-registry-2-0-with-token-authentication-service/

© 著作权归作者所有

HelloEric

HelloEric

粉丝 8
博文 81
码字总数 76741
作品 0
成都
私信 提问
Docker Registry v2 + Token Auth Server (Registry v2 认证)实例。

关于Registry 对于registry v1 --> v2中,其中的原理、优化等,这里不再做一一介绍。这里有篇文章我瞄过几眼应该是比较不错的介绍文章了:http://dockone.io/article/747 。 Registry v2 toke...

陈延宗
2018/06/29
0
0
如何快速利用Harbor搭建自己的企业级registry server?

小贴士 Harbor是由VMware团队为企业用户设计的Registry Server开源项目,用户可以利用Harbor搭建自己的私有镜像仓库。即使你是harbor小白,也可以从本文快速从认识Harbor到利用Harbor搭建自己...

wise2c
2016/12/28
224
0
Docker Registry/Distribution概述

Registry vs Index Docker Registry服务中的两个重要组件,分别承担以下不同的职责: Index:主要负责集中管理用户账户,访问权限,镜像的校验和 以及区分公有和私有repos(也就是公共的命名空...

Markz0928
2017/03/11
319
0
企业级容器Registry开源项目Harbor架构简介

企业级容器Registry开源项目Harbor架构简介 作者:姜坦 张海宁 (本文作者为Harbor项目组核心成员,于2016年9月5日作了更新。) 1. Harbor项目 VMware公司最近开源了企业级Registry项目Harbo...

project_harbor
2016/03/31
3.5K
4
知乎十万级容器规模的分布式镜像仓库实践

知乎在 2016 年已经完成了全量业务的容器化,并在自研容器平台上以原生镜像的方式部署和运行,并在后续陆续实施了 CI、Cron、Kafka、HAProxy、HBase、Twemproxy 等系列核心服务和基础组件的容...

云学习小组
2018/07/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

关于java中变量的重名问题

在java语言中,变量的命名有很多规则和规范,但是有的地方可以使用相同的变量名,有的地方却不能使用,这是为什么呢? 下面是个人的一点见解,是从作用域和内存来分析的,目的是为了方便理解...

INEVITABLE
25分钟前
4
0
MySQL的COUNT语句,竟然都能被面试官虐的这么惨?

数据库查询相信很多人都不陌生,所有经常有人调侃程序员就是CRUD专员,这所谓的CRUD指的就是数据库的增删改查。 在数据库的增删改查操作中,使用最频繁的就是查询操作。而在所有查询操作中,...

程序员修BUG
28分钟前
4
0
PHP+Mysql统计文件下载次数实例

PHP+Mysql统计文件下载次数实例,实现的原理也很简单,是通过前台点击链接download.php传参id,来更新点击次数。 获取文件列表: <?php require 'conn.php'; $query = mysql_query("S...

ymkjs1990
29分钟前
3
0
一、环境变量及Jshell

一、环境变量: 作用: 可执行文件所在位置的链接。CLI输入命令时,通过环境变量指引找到命令所在位置 windows的环境变量名不区分大小写,Linux区分 Windows下的用户变量即只有当前用户生效 ...

清自以敬
30分钟前
4
0
微软改名部又出手:Office 365正在悄悄更名为Microsoft 365

然而让人疑惑的是Microsoft 365 是微软面向企业提供的服务,这项服务附带操作系统以及办公软件的订阅授权。 现在把面向家庭消费者的办公软件也换成Microsoft 365 是什么操作?没人知道因为微...

linuxCool
30分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部