容器入门(6) - 获取访问Docker Registry的公钥证书

OpenShift 4.x HOL教程汇总

获取问Docker Registry的证书

在根据《容器入门(1) - 安装和使用Docker Registry》,我们可以使用curl远程访问Docker Registry。在这个过程中必须用到访问Docker Registry的有效SSL证书。这个证书一方面可以根据《容器入门(1) - 安装和使用Docker Registry》直接从运行Docker Registry的操作系统获取到,还可通过以下方法远程获取到。

  1. 确认当前环境中有Java运行环境。如果没有可以通过方式安装:
$ yum install java-1.8.0-openjdk
  1. 执行命令,获取访问<REGISTRY_SERVER>的公钥证书。
$ keytool -printcert -sslserver <REGISTRY_SERVER> -rfc > /etc/pki/ca-trust/source/anchors/myregistry.crt
$ more /etc/pki/ca-trust/source/anchors/myregistry.crt
-----BEGIN CERTIFICATE-----
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
WTrz
  1. 将公钥myregistry.crt更新到系统的证书库中。
$ update-ca-trust
  1. 查看访问<REGISTRY_SERVER>过程中使用的证书。
$ curl -v https://<REGISTRY_SERVER>
* About to connect() to registry.example.internal port 5000 (#0)
*   Trying 192.168.203.122...
* Connected to registry.example.internal (192.168.203.122) port 5000 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* SSL connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
* Server certificate:
*       subject: E=admin@example.internal,CN=registry.example.internal,OU=IT,O=REDHAT,L=BJ,ST=BEIJING,C=CN
*       start date: 11月 05 12:10:28 2020 GMT
*       expire date: 11月 05 12:10:28 2021 GMT
*       common name: registry.example.internal
*       issuer: E=admin@example.internal,CN=registry.example.internal,OU=IT,O=REDHAT,L=BJ,ST=BEIJING,C=CN
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: registry.example.internal:5000
> Accept: */*
>
< HTTP/1.1 200 OK
< Cache-Control: no-cache
< Date: Sat, 07 Nov 2020 03:13:31 GMT
< Content-Length: 0
< Content-Type: text/plain; charset=utf-8
<
* Connection #0 to host registry.example.internal left intact
  1. 使用系统的证书库查看<REGISTRY_SERVER>上的镜像。
$ curl -u <USERNAME>:<PASSWORD> https://<REGISTRY_SERVER>/v2/_catalog 
  1. 使用指定的公钥证书查看<REGISTRY_SERVER>上的镜像。
$ curl --cacert /etc/pki/ca-trust/source/anchors/myregistry.crt -u <USERNAME>:<PASSWORD> https://<REGISTRY_SERVER>/v2/_catalog 

参考

https://medium.com/@salih.sipahi1/use-your-own-external-registry-with-openshift-container-platform-8bafff3f660

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是搭建私服镜像中心docker-registrydocker-registry-web的步骤: 1.安装DockerDocker Compose 2.创建一个目录来存储docker-compose.yml文件和证书文件 3.创建docker-compose.yml文件并添加以下内容: ```yaml version: '3' services: registry: restart: always image: registry:2 ports: - 5000:5000 environment: REGISTRY_AUTH: htpasswd REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm REGISTRY_STORAGE_DELETE_ENABLED: "true" REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt REGISTRY_HTTP_TLS_KEY: /certs/domain.key volumes: - ./data:/var/lib/registry - ./auth:/auth - ./certs:/certs registry-web: restart: always image: mkuchin/docker-registry-web:v0.1.2 ports: - 8080:8080 environment: REGISTRY_URL: https://registry:5000 REGISTRY_WEB_TITLE: Docker Registry REGISTRY_AUTH: htpasswd REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt REGISTRY_HTTP_TLS_KEY: /certs/domain.key volumes: - ./auth:/auth - ./certs:/certs ``` 4.创建一个目录来存储证书文件和htpasswd文件 5.生成证书文件 ```shell openssl req -newkey rsa:4096 -nodes -sha256 -keyout domain.key -x509 -days 365 -out domain.crt ``` 6.生成htpasswd文件 ```shell htpasswd -Bc auth/htpasswd <username> ``` 7.启动docker-compose ```shell docker-compose up -d ``` 8.访问https://<your-domain>:8080,输入用户名和密码即可登录docker-registry-web界面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值