关于我们

质量为本、客户为根、勇于拼搏、务实创新

新闻公告

< 返回新闻公共列表

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

发布时间:2022-03-30 16:02:47

搭建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/nginxThe 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

关于“Docker如何搭建基于Token认证的的Registry服务”这篇文章就分享到这里了


免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:leidianyun@qq.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

文本转载自网络


/template/Home/ZdsjuX168/PC/Static

网站通知

尊敬的雷电云用户,您好:

雷电云停止运营,仅保留域名续费!

雷电云停止运营,仅保留域名续费雷电云停止运营,仅保留域名续费
雷电云停止运营,仅保留域名续费雷电云停止运营,仅保留域名续费

我知道了