docker容器技术之私有registry(七)

版权声明: https://blog.csdn.net/JENREY/article/details/84633434

 上一篇文章:docker容器技术之Dockerfile详解(六)


 目录

方法一:docker distribution

方法二:Harbor


  • 方法一:docker distribution

docker为了能够快速创建 私有Registry,提供了docker-distribution

docker直接提供了registry的镜像就叫registry,把这个镜像拖到本地来,启动起来就能运行registry了

而registry的主要作用就是帮我们托管镜像的。而本身registry就运行在容器中,随着容器的生命周期终止而终止,那么我们有很多镜像放在这个registry的容器中,所以我们要给registry定义一个存储卷,而这个存储卷最好不要放在本地而是在网络中存储。而这个镜像文件自己定义的存储卷还是在dockerhost本地的docker管理的卷,只不过我们可以修改让他改为挂载其他的或者宿主机上的指定位置的其他存储卷

发现yum中的docker-registry版本很低,下图是docker官网的版本,但是不影响我们使用

所以说看上去版本低,其实是一样的,是最新的版本。其实这个包名叫docker-distribution,只不过额外给他封装了一个名字叫docker-registry。

rpm -ql 包名 查看一个包安装了哪些文件

下图就是存储的地址

下面我们启动服务

下面我们开始推送镜像

先打标签因为顶层仓库的问题之前我们讲过

报错了。默认是https协议,我们这是http的协议,所以docker push默认是基于https协议工作的。但是我们的服务器端是http,他俩不兼容。

所以我们的docker registry必须做成https。

这里我们修改我们的客户端为http,而服务端就是http

再次推一下,

查看历史命令

看到上图,这说明有很多层。

下面我们在其他节点去pull这个镜像


CNCF组织维护的软件:K8S,harbor等

  • 方法二:Harbor

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

安装Harbor需要安装Docker Compse

下载harbor,进入github进行下载

使用wget下载

看一下就行,下面我们编辑文件

注意:之前我们在node02上启动了docker-distribution,要先停掉

必需参数:

  • hostname:目标主机的主机名,用于访问UI和注册表服务。它应该是目标机器的IP地址或完全限定域名(FQDN),例如192.168.1.10reg.yourdomain.com。不要使用localhost127.0.0.1为主机名 – 注册表服务需要外部客户端访问!
  • ui_url_protocol:(http或https。默认为http)用于访问UI和令牌/通知服务的协议。如果启用公证,则此参数必须为https。默认情况下,这是http。要设置https协议,请参阅使用HTTPS访问harbor
  • db_password:用于db_auth的MySQL数据库的根密码。更改此密码以供任何生产用途!
  • max_job_workers:(默认值为3)作业服务中的最大复制工作数。对于每个映像复制作业,工作程序将存储库的所有标签同步到远程目标。增加此数字允许系统中更多的并发复制作业。但是,由于每个工作人员都会消耗一定数量的网络/ CPU / IO资源,请根据主机硬件资源选择该属性的值。
  • customize_crt:(打开或关闭,默认为打开)当此属性打开时,准备脚本将为注册表令牌的生成/验证创建私钥和根证书。当密钥和根证书由外部源提供时,将此属性设置为off。有关详细信息,请参阅自定义密钥和harbor令牌服务证书
  • ssl_cert:SSL证书的路径,仅当协议设置为https时才应用
  • ssl_cert_key:SSL密钥的路径,仅当协议设置为https时才应用
  • secretkey_path:用于在复制策略中加密或解密远程注册表的密码的密钥路径。

可选参数

  • 电子邮件设置:Harbor需要这些参数才能向用户发送“密码重设”电子邮件,只有在需要该功能时才需要这些参数。另外,请注意,在默认情况下SSL连接时没有启用-如果你的SMTP服务器需要SSL,但不支持STARTTLS,那么你应该通过设置启用SSL email_ssl = TRUE。
  • harbor_admin_password:管理员的初始密码。该密码仅在Harbor 第一次启动时生效。之后,此设置将被忽略,并且应在UI中设置管理员的密码。请注意,默认用户名/密码为admin / Harbor12345。
  • auth_mode:使用的身份验证类型。默认情况下,它是db_auth,即凭据存储在数据库中。对于LDAP身份验证,请将其设置为ldap_auth。重要提示:从现有的Harbor 实例升级时,必须确保auth_modeharbor.cfg在启动新版本的Harbor之前是一样的。否则,升级后用户可能无法登录。
  • ldap_url:LDAP端点URL(例如ldaps://ldap.mydomain.com)。 仅当auth_mode设置为ldap_auth时才使用。
  • ldap_searchdn:具有搜索LDAP / AD服务器权限的用户的DN(例如uid=admin,ou=people,dc=mydomain,dc=com)。
  • ldap_search_pwd:由ldap_searchdn指定的用户的密码。
  • LDAP_BASEDN:基本DN查找用户,如ou=people,dc=mydomain,dc=com。 仅当auth_mode设置为ldap_auth时才使用。
  • LDAP_FILTER:用于查找用户,例如,搜索过滤器(objectClass=person)
  • ldap_uid:用于在LDAP搜索期间匹配用户的属性,它可以是uid,cn,电子邮件或其他属性。
  • ldap_scope:搜索用户的范围,1-LDAP_SCOPE_BASE,2-LDAP_SCOPE_ONELEVEL,3-LDAP_SCOPE_SUBTREE。默认值为3。
  • self_registration:(开或关,默认为开)启用/禁用用户注册自己的能力。禁用时,只能由管理员用户创建新用户,只有管理员用户才能在海港创建新用户。 注意:当auth_mode设置为ldap_auth时,自注册功能始终被禁用,并且该标志被忽略。
  • token_expiration:令牌服务创建的令牌的到期时间(以分钟为单位),默认值为30分钟。
  • project_creation_restriction:用于控制用户有权创建项目的标志。默认情况下,每个人都可以创建一个项目,设置为“adminonly”,以便只有admin才能创建项目。
  • verify_remote_cert:(上或关闭,默认为上)该标志,判断是否验证SSL / TLS证书时码头与远程注册表实例通信。将此属性设置为off可绕过SSL / TLS验证,SSL / TLS验证通常在远程实例具有自签名或不受信任的证书时使用。

注意他会自动运行一个mysql容器。

下面,我们启动服务:运行install.sh脚本

注意这个脚本运行起来会非常慢,因为他需要把 harbor .v1.4.0.tar.gz load到本机并展开,这里面是运行docker.compose 中所定义的各种容器的所有镜像。我们的镜像是可以打包存的。所以这里是把所有的镜像打包成.gz文件

再次运行脚本:(需要很长的时间)

可以看到本机监听了80、443、4443端口

他们监听的物理端口,这样我们就可以基于物理机的地址和端口访问服务

用户名就是Harbor.cfg里面配置的

下面我们来推送几个镜像

由于我们的Harbor是http协议的。所以我们需要先编辑一下docker的daemon.json

这里可以不用写:80,因为默认就是80端口

重启docker

现在我们打标签:

下面开始推,但是发现报错了,因为没登陆Harbor

下面我们开始登陆:

在开始推送

查看是否推上来了

下面我们可以了解一下存放的位置

如果我们要停止docker harbor服务,我们要使用下面的命令

注意一般我们要指定docker harbor的目录。所以比较麻烦,我们都是去harbor目录去执行命令

下面是暂停

下面是继续运行

以后在启用我们就可以用start

如果以后不用了就可以使用rm

使用logs可以看到容器的各种日志

现在简单使用就行了 ,因为以后我们也可以把harbor托管到k8s上去管理,就不用现在这种compose的单机模式来管理了。


下一篇文章:docker容器技术之系统资源限制及验正(八)

猜你喜欢

转载自blog.csdn.net/JENREY/article/details/84633434