Linux下docker私有仓库registry之实现加密仓库(二)(docker版本:18.06.1-ce)

续我的上篇博文:https://mp.csdn.net/postedit/88692448

 

 

一、实验环境(rhel7.3版本)

1.selinux和firewalld状态为disabled

2.各主机信息如下:

主机ip
server1(Docker服务端)172.25.83.1
物理机(Docker客户端。之前实验安装过docker,所以这里可以直接使用,不用再安装docker)172.25.83.83/172.25.254.83

3.在/media目录下创建目录registry,用于存放registry私有仓库的镜像数据(这个目录也可以是别的目录,目录的名称随意给)——上篇博文用的是/opt/registry(因为已经被仓库registry占用,所以这里重件新建一个目录)

[root@server1 ~]# cd /media/
[root@server1 media]# mkdir registry

 

二、registry私有仓库实现加密仓库(其中xin.org.crt证书和xin.org.key私钥可以随意给名字,只要前后对应一致即可)

 

配置服务端(server1):

 

1、创建certs证书,生成服务器私钥

 

[root@server1 ~]# cd /mnt/docker/ 
[root@server1 docker]# mkdir certs   #在哪个目录下创建certs都可以,该目录的名字随意给
[root@server1 docker]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/xin.org.key -x509 -days 365 -out certs/xin.org.crt   #必须在certs目录的上一层目录执行(由命令决定的)
Generating a 4096 bit RSA private key
..........................................................................................................++
..........++
writing new private key to 'certs/xin.org.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:cn   #国家的名字(随意给)
State or Province Name (full name) []:shanxi   #省的名字(随意给)
Locality Name (eg, city) [Default City]:xi'an   #市的名字(随意给)
Organization Name (eg, company) [Default Company Ltd]:linux   #公司的名字(随意给)
Organizational Unit Name (eg, section) []:redhat   #部门的名字(随意给)
Common Name (eg, your name or your server's hostname) []:xin.org   #域名(必须上面指定的xin.org)
Email Address []:root@xin.com   #email地址(随意给)
  • 查看证书、私钥

 

2、启动仓库

 

[root@server1 certs]# cd ..
[root@server1 docker]# docker run -d \   #必须在certs目录的上一层目录执行(由命令决定的)
> --restart=always \      #表示开机自启
> --name registry1 \
> -v "$(pwd)"/certs:/certs \
> -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \   #必须是0.0.0.0:443
> -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/xin.org.crt \
> -e REGISTRY_HTTP_TLS_KEY=/certs/xin.org.key \
> -p 443:443 \
> -v /media/registry:/var/lib/registry \
> registry:2.3.1

#参数说明:
-d:后台静默运行容器。
--restart:设置容器重启策略。
--name:命名容器。
-v:挂载信息
-e REGISTRY_HTTP_ADDR:设置仓库主机地址格式。
-e REGISTRY_HTTP_TLS_CERTIFICATE:设置环境变量告诉容器证书的位置。
-e REGISTRY_HTTP_TLS_KEY:设置环境变量告诉容器私钥的位置。
-p:将容器的 443 端口映射到Host主机的 443 端口。
  • 查看运行的registry1容器

  • 查看443端口(https)

 

3、编写/etc/hosts文件,增加域名解析

 

[root@server1 ~]# vim /etc/hosts
172.25.83.1    server1 xin.org

 

4、上传xin.org/rhel7:nginx4(上传的镜像随意选,但是/前面必须是前面设定的域名xin.org

 

[root@server1 ~]# docker tag rhel7:nginx4 xin.org/rhel7:nginx4
[root@server1 ~]# cd /etc/docker/
[root@server1 docker]# mkdir certs.d   #该目录的名字必须是certs.d目录
[root@server1 docker]# cd certs.d/
[root@server1 certs.d]# mkdir xin.org   #该目录的名字必须是xin.org(前面指定的域名)
[root@server1 certs.d]# cd xin.org/
[root@server1 xin.org]# cp /mnt/docker/certs/xin.org.crt ca.crt   #这个证书的名字可以随意给
[root@server1 xin.org]# ls
ca.crt
[root@server1 xin.org]# docker push xin.org/rhel7:nginx4 
The push refers to repository [xin.org/rhel7]
9fd85e6ca660: Pushed   #显示Pushed表示上传成功 
668afdbd4462: Pushed 
nginx4: digest: sha256:96f12a4c433231a0c36d20af593dba0c135fed0aa2d3c180c2c00ac2a9cd5867 size: 739
  • 我们可以看到/media/registry目录下有相应的registry私有仓库的镜像数据(分层存储)

 

客户端测试(物理机):

1、在物理机上编写/etc/hosts文件,增加域名解析;获取证书;并进行测试:下载xin.org/rhel7:nignx4

 

<1>编写/etc/hosts文件,增加域名解析

 

[root@foundation83 ~]# vim /etc/hosts
172.25.83.1 xin.org

 

在下载之前,

1.我们需要先获取registry仓库类的镜像:(值的注意的是:必须在浏览器中进行测试:因为https必须在web界面进行证书的获取)

在web界面获取证书之后,得到下面的结果

2.我们需要获取某个镜像的标签列表:

在web界面获取证书之后,得到下面的结果

 

<2>获取证书

 

[root@foundation83 ~]# mkdir /etc/docker/certs.d/xin.org -p   #目录的名字必须是这个
[root@server1 xin.org]# scp /etc/docker/certs.d/xin.org/ca.crt root@172.25.83.83:/etc/docker/certs.d/xin.org/   #将server1上的ca.crt文件复制到物理机的/etc/docker/certs.d/xin.org目录下

 

 

<3>测试:下载xin.org/rhel7:nignx4

 

[root@foundation83 ~]# docker pull xin.org/rhel7:nginx4
nginx4: Pulling from rhel7
269521def953: Pull complete   #看到Pull complete表示pull成功
ff969636d6bb: Pull complete 
Digest: sha256:96f12a4c433231a0c36d20af593dba0c135fed0aa2d3c180c2c00ac2a9cd5867
Status: Downloaded newer image for xin.org/rhel7:nginx4

 

 

##如果看不惯镜像xin.org/rhel7:nginx4这个名字,可以改名字
[root@foundation83 ~]# docker tag xin.org/rhel7:nginx4 rhel7:nginx4
[root@foundation83 ~]# docker rmi xin.org/rhel7:nginx4 

 


服务端可以上传镜像,也可以下载镜像(这里不再演示,同客户端的pull);客户端如果有证书,当然可以上传镜像(这里不再演示,同服务端的push),也可以下载镜像。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker中,可以通过使用Portus来实现docker私有仓库Registry的可视化。Portus是一个带有UI管理功能的仓库管理软件,它可以与Registry一起使用,提供更方便的图形化用户界面来浏览、检索和管理Docker镜像仓库。通过Portus,用户可以通过浏览器来管理项目和命名空间,进行权限管理,进行镜像的复制和同步,以及记录和追踪所有对镜像仓库的操作,用于审计管理。同时,Portus还支持与企业现有的AD/LDAP进行集成,方便进行鉴权认证管理。总之,使用Portus可以使docker私有仓库Registry的管理更加简单和直观。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Docker仓库之企业级可视化私有仓库Harbor(安装、快速、入门)](https://blog.csdn.net/qq_41417660/article/details/106809535)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [docker私有镜像仓库registry及其可视化系统Portus的搭建【转】](https://blog.csdn.net/weixin_33898876/article/details/85966303)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值