五、Docker仓库之https的registry搭建(二)

这篇具有很好参考价值的文章主要介绍了五、Docker仓库之https的registry搭建(二)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本节我们分享更多的实用的仓库搭建使用方式。包括支持https的registry、Harbor、nexus。

支持HTTPS的registry

准备站点证书(测试使用,用一个自己的测试域名,配置本地hosts)
如果你拥有一个公网域名,那很好,你很牛。当然也可以使用 openssl 自行签发证书。
这里我计划将要搭建的私有仓库地址为 docker.margu.com,下面介绍使用 openssl 自行签发 docker.margu.com 的站点 SSL 证书。
1、创建 CA 私钥

[root@k8s-m1 ~]# openssl genrsa -out "root-ca.key" 2048
Generating RSA private key, 2048 bit long modulus

2、利用私钥创建 CA 根证书请求文件

[root@k8s-m1 ~]# openssl req  -new -key "root-ca.key"  -out "root-ca.csr" -sha256  -subj '/C=CN/ST=sichuang/L=chengdu/O=margu/CN=docker.margu.com'
[root@k8s-m1 ~]# ll root-ca.csr 
-rw-r--r-- 1 root root 989 May 22 21:54 root-ca.csr

以上命令中 -subj 参数里的 /C 表示国家,如 CN;/ST 表示省;/L 表示城市或者地区;/O 表示组织名;/CN 通用名称。

3、配置 CA 根证书,新建 root-ca.cnf

[root@k8s-m1 ~]#vim root-ca.cnf
[root_ca]
basicConstraints = critical,CA:TRUE,pathlen:1
keyUsage = critical, nonRepudiation, cRLSign, keyCertSign
subjectKeyIdentifier=hash

4、签发根证书

[root@k8s-m1 ~]# openssl x509 -req  -days 3650  -in "root-ca.csr"  -signkey "root-ca.key" -sha256 -out "root-ca.crt" -extfile "root-ca.cnf" -extensions root_ca
Signature ok
subject=/C=CN/ST=sichuang/L=chengdu/O=margu/CN=docker.margu.com
Getting Private key

5、生成站点 SSL 私钥

[root@k8s-m1 ~]#  openssl genrsa -out "docker.margu.com.key" 2048
Generating RSA private key, 2048 bit long modulus
.....................................................................................................................+++
.........................................................+++
e is 65537 (0x10001)

6、使用私钥生成证书请求文件

[root@k8s-m1 ~]# openssl req -new -key "docker.margu.com.key" -out "site.csr" -sha256  -subj '/C=CN/ST=sichuan/L=chengdu/O=margu/CN=docker.margu.com'

7、配置证书,新建 site.cnf 文件

[root@k8s-m1 ~]#vim site.cnf
[server]
authorityKeyIdentifier=keyid,issuer
basicConstraints = critical,CA:FALSE
extendedKeyUsage=serverAuth
keyUsage = critical, digitalSignature, keyEncipherment
subjectAltName = DNS:docker.domain.com, IP:192.168.2.140
subjectKeyIdentifier=hash

8、签署站点 SSL 证书

[root@k8s-m1 ~]# openssl x509 -req -days 750 -in "site.csr" -sha256     -CA "root-ca.crt" -CAkey "root-ca.key"  -CAcreateserial     -out "docker.margu.com.crt" -extfile "site.cnf" -extensions server
Signature ok
subject=/C=CN/ST=sichuan/L=chengdu/O=margu/CN=docker.margu.com
Getting CA Private Key

这样已经拥有了 docker.domain.com 的网站 SSL 私钥 docker.domain.com.key 和 SSL 证书 docker.domain.com.crt 及 CA 根证书 root-ca.crt。
新建 /root/registry/ssl文件夹并将 docker.domain.com.key docker.domain.com.crt root-ca.crt 这三个文件移入,其他文件也可以移进去。

9、配置私有仓库

[root@k8s-m1 ~]# mkdir -p /root/registry/ssl
[root@k8s-m1 ~]# mv  docker.margu.com.key docker.margu.com.crt root-ca.crt  /root/registry/ssl
[root@k8s-m1 ~]# docker ps
CONTAINER ID   IMAGE                                               COMMAND                  CREATED          STATUS          PORTS                    NAMES
d7e4249bc561   registry                                            "/entrypoint.sh /etc…"   44 minutes ago   Up 24 minutes   0.0.0.0:5000->5000/tcp   registry
[root@k8s-m1 ~]# docker exec -it d7e /bin/sh
[root@k8s-m1 auth]#  docker exec -it d7e /bin/sh
/ # ls -al /etc/docker/registry/config.yml
-rw-rw-r--    1 root     root           295 Nov 13  2021 /etc/docker/registry/config.yml

私有仓库默认的配置文件位于 /etc/docker/registry/config.yml,我们先在本地编辑 config.yml,之后挂载到容器中使用。

version: 0.1
log:
  accesslog:
    disabled: true
  level: debug
  formatter: text
  fields:
    service: registry
    environment: staging
storage:
  delete:
    enabled: true
  cache:
    blobdescriptor: inmemory
  filesystem:
    rootdirectory: /var/lib/registry
auth:
  htpasswd:
    realm: basic-realm
    path: /etc/docker/registry/auth/registry
http:
  addr: :443
  host: https://docker.margu.com
  headers:
    X-Content-Type-Options: [nosniff]
  http2:
    disabled: false
  tls:
    certificate: /etc/docker/registry/ssl/docker.margu.com.crt
    key: /etc/docker/registry/ssl/docker.margu.com.key
health:
  storagedriver:
    enabled: true
    interval: 10s
threshold: 3

10、生成 http 认证文件

[root@k8s-m1 ~]#mkdir -p /root/registry/auth
[root@k8s-m1 ~]#docker run --rm     --entrypoint htpasswd     httpd:alpine   -Bbn margu 123456 > /root/registry/auth/registry

将上面的 username password 替换为自己想用的用户名和密码。
11、添加编辑 docker-compose.yml

version: '3'
services:
  registry:
    image: registry
    ports:
      - "443:443"
    volumes:
      - /root/registry:/etc/docker/registry
      - registry-data:/var/lib/registry
volumes:
  registry-data:

放在registry目录下
注意最后的所有文件路径:

[root@k8s-m1 registry]# tree
.
├── auth
│   └── registry
├── config.yml
├── docker-compose.yml
└── ssl
    ├── docker.margu.com.crt
    ├── docker.margu.com.key
    ├── root-ca.crt
    ├── site.cnf
    └── ssl.conf

修改 hosts
往/etc/hosts中添加:
192.168.2.140 docker.margu.com
启动

[root@k8s-m1 ~]#docker-compose up -d

这样我们就搭建好了一个具有权限认证、TLS 的私有仓库,接下来我们测试其功能是否正常。
测试私有仓库功能。
由于自行签发的 CA 根证书不被系统信任,所以我们需要将 CA 根证书 ssl/root-ca.crt 移入 /etc/docker/certs.d/docker.margu.com 文件夹中。

[root@k8s-m1 ~]# mkdir -p /etc/docker/certs.d/docker.margu.com

[root@k8s-m1 ~]#cp /root/registry/ssl/root-ca.crt /etc/docker/certs.d/docker.margu.com/ca.crt

登录到私有仓库。

[root@k8s-m1 ~]#docker login docker.margu.com

尝试推送、拉取镜像。

[root@k8s-m1 ssl]# docker tag  registry:latest  docker.margu.com/registry:latest
[root@k8s-m1 ssl]# docker push docker.margu.com/registry:latest 
The push refers to repository [docker.margu.com/registry]
aeccf26589a7: Layer already exists 
f640be0d5aad: Layer already exists 
aa4330046b37: Pushed 
ad10b481abe7: Layer already exists 
69715584ec78: Layer already exists 
latest: digest: sha256:36cb5b157911061fb610d8884dc09e0b0300a767a350563cbfd88b4b85324ce4 size: 1363

如果我们退出登录,尝试推送镜像。

[root@k8s-m1 ssl]# docker logout  docker.margu.com
Removing login credentials for docker.margu.com
[root@k8s-m1 ssl]# docker push docker.margu.com/registry:latest 
The push refers to repository [docker.margu.com/registry]
aeccf26589a7: Preparing 
f640be0d5aad: Preparing 
aa4330046b37: Preparing 
ad10b481abe7: Preparing 
69715584ec78: Preparing 
no basic auth credentials

发现会提示没有登录,不能将镜像推送到私有仓库中。

web界面登录也是正常的。
docker https 私有仓库,docker,docker,容器,运维

由于篇幅原因,其他方式的搭建请看其他章节。文章来源地址https://www.toymoban.com/news/detail-650979.html

到了这里,关于五、Docker仓库之https的registry搭建(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【云原生】Docker私有仓库registry

        目录 1)用docker容器运行registry私有仓库服务。 2)运行私有仓库服务 3)镜像重命名(要上传的镜像名需要注明私仓的ip) 4)编辑docker配置文件(因为默认是拉取docker官方的镜像,需要重新指定) 5)其他dockerhost上传私有仓库 修改docker配置文件 查看仓库有哪些镜像 1)用dock

    2024年02月15日
    浏览(38)
  • Docker--harbor Docker--registry 私有仓库部署与管理

    拉取 registry 镜像 开启registries容器 添加私有仓库地址 使用配置文件 /etc/docker/daemon.json(没有时新建该文件)添加私有仓库地址 (在任何需要推送以及拉去镜像的docker宿主机上) 重新加载Docker守护程序  更改tag并上传 更改tag 推送到私有仓库 浏览器访问,查看存储的镜像 

    2024年02月15日
    浏览(55)
  • 【云原生】Docker私有仓库 Registry&Habor

    目录 1.Docker私有仓库(Registry) 1.1  Registry的介绍 1.2 Registry的部署 步骤一:拉取相关的镜像 步骤二:进行 Registry的相关yml文件配置(docker-compose) 步骤三:镜像的推送  2. Registry的升级——Habor 2.1 Habor的简介 2.2 Habor的特性 2.3 Habor的构成​编辑 3. Harbor 部署  (1)部署

    2024年02月11日
    浏览(37)
  • Docker registry镜像仓库,私有仓库及harbor管理详解

    目录 registry镜像仓库概述 Docker 镜像仓库(Docker Registry): registry 容器: 私有仓库概述 搭建本地私有仓库示例 Harbor概述 harbor架构 详解构成 Harbor由容器构成 Harbor部署示例 环境准备 部署Docker-Compose服务 部署 Harbor 服务 启动Harbor 查看 Harbor 启动镜像 创建一个新项目 在其他客

    2024年01月18日
    浏览(49)
  • 了解 Dockerfile 和搭建 Docker 私有仓库:让容器化部署变得更简单

    目录 1、Dockerfile 1.1什么是Dockerfile 1.2常用命令 1.3使用脚本创建镜像 2、Docker私有仓库 2.1私有仓库介绍: 2.2私有仓库搭建与配置 2.3上传镜像到私有仓库: 1.1什么是Dockerfile Dockerfile是由一些列命令和参数构成的脚本,这些命令应用于基础镜像并且最终创建一个新的镜像。 Dock

    2024年02月10日
    浏览(41)
  • docker 查看registry私有仓库的镜像tag列表

    前提条件:已经正确部署docker和私有仓库registry。并且有私有仓库的登录用户名,密码。。需要查看某一个镜像的tag列表。 本文验证地址:【私有ip】为192.168.0.200  【images】为centos。私有仓库用户名:root,密码:password 提示:如果按照下面方式访问不成功,请注意检查,本机

    2023年04月09日
    浏览(35)
  • 深度解析 Docker Registry:构建安全高效的私有镜像仓库

    🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专栏:大数据系列 ✨文章内容:Docker Registry 🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!🤗 Docker Registry是Docker生态系统中关键的组件,负责存储

    2024年02月04日
    浏览(84)
  • 云原生之容器编排实践-在K8S集群中使用Registry2搭建私有镜像仓库

    基于前面搭建的3节点 Kubernetes 集群,今天我们使用 Registry2 搭建私有镜像仓库,这在镜像安全性以及离线环境下运维等方面具有重要意义。 Note: 由于是测试环境,以下创建了一个 local-storage 的 StorageClass ,并使用本地磁盘的方式创建使用 PV ,实际建议使用 NFS 。 共用到了三台

    2024年02月19日
    浏览(48)
  • Docker学习入门(二):常用软件安装、掌握Docker迁移与备份、运用Dockerfile编写创建容器的脚本、搭建与使用docker私有仓库;

    Docker的学习目标: 4.掌握Tomcat Nginx等软件的常用的安装 5.掌握Docker迁移与备份相关命令 6.能够运用Dockerfile编写创建容器的脚本 7.能够搭建与使用docker私有仓库 8.学习总结 1.MYSQL的部署     (1)拉取mysql镜像          docker pull centos/mysql-57-centos7               (2)创建容

    2024年02月21日
    浏览(52)
  • 【Docker】使用 Docker Registry 搭建自己的 Docker 镜像仓库

    在使用 Docker 进行应用程序的开发和部署时,使用 Docker 镜像仓库是一个很好的实践。它允许集中存储和管理 Docker 镜像,方便团队协作和版本控制。在本文中,将介绍如何使用 Docker Registry 搭建自己的 Docker 镜像仓库,并提供配置文件和配置说明。 Docker Registry 是官方提供的开

    2024年02月13日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包