当前位置: 首页 > news >正文

【Docker】安装registry本地镜像库,开启Https功能

下载镜像

docker pull registry:2

      需要启动https功能,就要生成服务端的自签名的证书和私钥,以及在docker客户端安装这个经过签名的证书。 第一步:生成公私钥信息,第二步,制作证书签名申请文件, 第三步:用私钥签名申请文件(里面保护公钥申请人的公钥信息) 第四步: 把签名后的证书配置到docker端,同时在registry端配置私钥

制作公私钥

    首先熟悉下相关概念:

  • x509:证书标准
  • pem和der:两种(包括公私钥、证书签名请求、证书等内容的)的格式,前者是文本形式,linux常用,后者是二进制形式,windows常用,仅仅是格式,不表明内容,如果作为后缀就像html起的效果一样。有时候用pem做公钥的后缀
  • crt和cer:常见的两种证书后缀名,前者大多数情况为pem格式,后者大多数情况为der格式
  • csr:证书签名请求文件(后缀一般都是.csr),包含了公钥、用户名等信息
  • key:常见的私钥的后缀名

1、先创建一个公私钥对

   openssl genpkey -algorithm RSA -out registry_private.key  -pkeyopt rsa_keygen_bits:2048

  ** -algorithm RSA是说明 生产公私钥的算法,rsa_keygen_bits:2048 指定rsa算法密钥的长度,长度越长越安全,但是长度长解密时需要更长时间。 也可以用 -aes256 选项表示加密保护私钥。

2、查看使用openssl pkey -in registry_private.key -text -noout 查看生成后的私钥信息

      里面可以看到公钥和私钥部分信息

3、openssl rsa -in registry_private.key -pubout -out registry_public.key 生产一个公钥信息文件

     

 生成证书签名请求 (CSR)

   创建一个配置文件,内容如下:

[root@master01 pki]# cat crs.conf 
[req]
distinguished_name  = req_distinguished_name
req_extensions = v3_req
prompt = no

[req_distinguished_name]
C = CN
ST = CKG
L = CKG
O = ITTest
OU = IT
CN = 192.168.2.222

[v3_req]
keyUsage = critical, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]

DNS.1=master00.com
DNS.2=bqs.master00.com
IP.1 = 192.168.2.222  #这个ip就是你的镜像服务的ip,如果有域名的域名也添加上面 DNS.1= xxx.com

执行命令生成申请文件

openssl req -new -key registry_private.key -out registry.csr -config crs.conf

生成自签名证书

openssl x509 -req -in registry.csr -signkey registry_private.key -out registry.crt -days 3650 -extfile crs.conf -extensions v3_req

-days 3650 指定证书的有效天数

 查看证书

openssl x509 -in registry.crt -text -noout

启动私有仓库容器

docker run -d \
  --restart=always \
  --name registry \
  --memory 512m \
  -p 443:443  \
  -v /root/regimages:/var/lib/registry \
  --memory-swap -1 \
  -v /root/docker/pki:/etc/certs.d \   # 把刚才生成证书的目录挂载到 容器中
  -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
  -e REGISTRY_HTTP_SECRET=secret \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/etc/certs.d/registry.crt \  #指定了https的证书
  -e REGISTRY_HTTP_TLS_KEY=/etc/certs.d/registry_private.key \    #指定了https的私钥
  registry:2

把证书安装到Docker客户端

1、创建目录  /etc/docker/certs.d/192.168.2.222/   [在其他主机上也是这个ip作为文件夹]  

       如果https的默认端口不是443,比如是:444 ,那么文件夹的名称端口也要加上:  192.168.2.222:444

    ***  /etc/docker/certs.d/是固定的,后面IP目录就是根据自己实际IP 或者域名创建文件夹名称就行

2、把刚才生成的证书registry.crt 复制到上面的目录,而且名称要改成  ca.crt 。

3、重新启动Docker,就可以了

测试

***还有一种方式就是把用于签名的证书,因为这里是自签名,所以也就是这个自签名正式直接加入到操作系统层面的 信任正式库里面也可以。

#追加

   cat cat.crt >>  /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt  

#系统层面更新  

update-ca-trust

然后k8s中下载库中的镜像

在node上docker login 登录镜像库 生成  $HOME/.docker/config.json

kubectl create secret generic harborregcred -n jtkjdev --from-file=.dockerconfigjson=$HOME/.docker/config.json  --type=kubernetes.io/dockerconfigjson

    spec:

      imagePullSecrets:

      - name: harborregcred

      containers:

http://www.lryc.cn/news/516948.html

相关文章:

  • JUC--线程池
  • 后端Java开发:第十一天
  • 基于 GEE 的长时间序列 Landsat 5 影像下载
  • Unity-Mirror网络框架从入门到精通之Attributes属性介绍
  • 软考证书邮寄步骤
  • 计算机网络 (29)网络地址转换NAT
  • nlp培训重点-2
  • 设计模式(1)——面向对象和面向过程,封装、继承和多态
  • 培训机构Day24
  • 1/7 C++
  • C语言初阶习题【23】输出数组的前5项之和
  • Android audio(1)-音频模块概述
  • 园林与消防工程:选择正确工程项目管理软件的重要性
  • 分布式环境下定时任务扫描时间段模板创建可预订时间段
  • SQL刷题笔记——高级条件语句
  • 与 Oracle Dataguard 相关的进程及作用分析
  • 游戏语音趋势解析,社交互动有助于营造沉浸式体验
  • 美食烹饪互动平台
  • 【51单片机零基础-chapter5:模块化编程】
  • Redis中的主从/Redis八股
  • ROS笔记
  • 在 Linux 上调试 C++ 程序
  • 让跨 project 联查更轻松,SLS StoreView 查询和分析实践
  • 20240107-类型转换
  • 关于Linux PAM模块下的pam_listfile
  • OKHttp调用第三方接口,响应转string报错okhttp3.internal.http.RealResponseBody@4a3d0218
  • 弱电与电力工程领域,如何通过工程项目管理软件提升效率
  • 引领实时数据分析新时代:阿里云实时数仓 Hologres
  • 什么是中间件中间件有哪些
  • css中的部分文字特性