Docker Registry Harbor

Docker Registry

官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去。但是,有时候,我们的使用场景需要我们拥有一个私有的镜像仓库用于管理我们自己的镜像。这个可以通过开源软件Registry来达成目的。
Registry用于保存docker镜像,包括镜像的层次结构和元数据。用户可以自建Registry,也可以使用官方的Docker Hub。

Docker Registry分类:

  • Sponsor Registry:第三方的Registry,供客户和Docker社区使用
  • Mirror Registry:第三方的Registry,只让客户使用
  • Vendor Registry:由发布docker镜像的供应商提供的registry
  • Private Registry:通过设有防火墙和额外的安全层的私有实体提供的registry

为了帮助我们快速创建私有Registry,Docker专门提供了一个名为Docker Distribution的软件包,我们可以通过安装这个软件包快速构建私有仓库。

使用docker-distribution自建Registry

在wyt2上自建Registry

[root@wyt2 ~]# yum -y install docker-distribution
[root@wyt2 ~]# vim /etc/docker-distribution/registry/config.yml
version: 0.1
log:
  fields:
    service: registry
storage:
    cache:
        layerinfo: inmemory
    filesystem:
        rootdirectory: /var/lib/registry  #修改此处为一个容量大的磁盘分区目录
http:
    addr: :5000

[root@wyt2 ~]# systemctl start docker-distribution
[root@wyt2 ~]# ss -antl
State       Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN      0      128       *:22                    *:*                  
LISTEN      0      100    127.0.0.1:25                    *:*                  
LISTEN      0      128      :::22                   :::*                  
LISTEN      0      100     ::1:25                   :::*                  
LISTEN      0      128      :::5000                 :::*  

在wyt1上使用自建的Registry去上传镜像

[root@wyt1 ~]# vim /etc/docker/daemon.json
{
    "registry-mirrors": ["https://0v0l236l.mirror.aliyuncs.com"],
     "insecure-registries": ["wyt2:5000"] //添加此行
}

//在host上面主机名做ip映射
[root@wyt1 ~]# vim /etc/hosts
192.168.232.129 wyt2

[root@wyt1 ~]# systemctl restart docker
[root@wyt1 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              4bb46517cac3        2 weeks ago         133MB
centos              latest              0d120b6ccaa8        2 weeks ago         215MB
busybox             latest              018c9d7b792b        4 weeks ago         1.22MB
[root@wyt1 ~]# docker tag nginx:latest wyt2:5000/nginx:v0.1 //自建镜像
[root@wyt1 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              4bb46517cac3        2 weeks ago         133MB
wyt2:5000/nginx     v0.1                4bb46517cac3        2 weeks ago         133MB
centos              latest              0d120b6ccaa8        2 weeks ago         215MB
busybox             latest              018c9d7b792b        4 weeks ago         1.22MB
[root@wyt1 ~]# docker push wyt2:5000/nginx:v0.1  //上传镜像
The push refers to repository [wyt2:5000/nginx]
550333325e31: Pushed 
22ea89b1a816: Pushed 
a4d893caa5c9: Pushed 
0338db614b95: Pushed 
d0f104dc0a1f: Pushed 
v0.1: digest: sha256:179412c42fe3336e7cdc253ad4a2e03d32f50e3037a860cf5edbeb1aaddb915c size: 1362

//wyt2查看
[root@wyt2 ~]# cd /var/lib/registry/docker/registry/v2/repositoies/
[root@wyt2 repositories]# ls
nginx

[root@wyt1 ~]# docker pull wyt2:5000/nginx:v0.1  //拉取自建镜像
v0.1: Pulling from nginx
bf5952930446: Pull complete 
cb9a6de05e5a: Pull complete 
9513ea0afb93: Pull complete 
b49ea07d2e93: Pull complete 
a5e4a503d449: Pull complete 
Digest: sha256:179412c42fe3336e7cdc253ad4a2e03d32f50e3037a860cf5edbeb1aaddb915c
Status: Downloaded newer image for wyt2:5000/nginx:v0.1
wyt2:5000/nginx:v0.1
[root@wyt1 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
wyt2:5000/nginx     v0.1                4bb46517cac3        2 weeks ago         133MB

使用官方镜像自建Registry

[root@wyt2 ~]# docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry //自建
Unable to find image 'registry:latest' locally
Trying to pull repository docker.io/library/registry ... 
latest: Pulling from docker.io/library/registry
cbdbe7a5bc2a: Pull complete 
47112e65547d: Pull complete 
46bcb632e506: Pull complete 
c1cc712bcecd: Pull complete 
3db6272dcbfa: Pull complete 
Digest: sha256:8be26f81ffea54106bae012c6f349df70f4d5e7e2ec01b143c46e2c03b9e551d
Status: Downloaded newer image for docker.io/registry:latest
ce05b9fe5829f67e0c3e8af897022e03399dc166bf1702474bddd7a8f3462235
[root@wyt2 ~]# ss -antl
State       Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN      0      128      *:22                   *:*                  
LISTEN      0      100    127.0.0.1:25                   *:*                  
LISTEN      0      128     :::22                  :::*                  
LISTEN      0      100    ::1:25                  :::*                  
LISTEN      0      128     :::5000                :::*  

[root@wyt1 ~]# docker push wyt2:5000/nginx:v0.1 //上传
The push refers to repository [wyt2:5000/nginx]
550333325e31: Pushed 
22ea89b1a816: Pushed 
a4d893caa5c9: Pushed 
0338db614b95: Pushed 
d0f104dc0a1f: Pushed 
v0.1: digest: sha256:179412c42fe3336e7cdc253ad4a2e03d32f50e3037a860cf5edbeb1aaddb915c size: 1362

[root@wyt2 ~]# docker exec -it ce05b9fe5829 /bin/sh //进入容器
/ # cd /var/lib/registry/docker/registry/v2/repositories/
/var/lib/registry/docker/registry/v2/repositories # ls  //查看
nginx

Harbor简介

Docker容器应用的开发和运行离不开可靠的镜像管理,虽然docker官方提供了公共的镜像仓库(Docker Hub),但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、界面管理、自我注册、镜像复制和中文支持等功能。
在这里插入图片描述
Harbor是由VMWare在Docker Registry的基础之上进行了二次封装,加进去了很多额外程序,而且提供了一个非常漂亮的web界面。

  • Project Harbor是一个开放源代码的受信任云本地注册表项目,用于存储,签名和扫描上下文。
  • Harbor通过添加用户通常需要的功能(例如安全性,身份和管理)扩展了开源Docker Distribution。
  • Harbor支持高级功能,例如用户管理,访问控制,活动监视以及实例之间的复制。

Harbor的功能

  • 多租户内容签名和验证
  • 安全和漏洞分析
  • 审核日志
  • 身份集成和基于角色的访问控制
  • 实例之间的映像复制
  • 可扩展的API和图形用户界面
  • 国际化(目前为英文和中文)

Harbor部署

[root@wyt2 ~]# yum -y install docker-compose
[root@wyt2 ~]# cd /usr/src/
[root@wyt2 src]# wget https://github.com/goharbor/harbor/releases/download/v2.0.2/harbor-offline-installer-v2.0.2.tgz
[root@wyt2 src]# ls
debug  harbor-offline-installer-v2.0.2.tgz  kernels
[root@wyt2 src]# tar xf harbor-offline-installer-v2.0.2.tgz -C /usr/local/
[root@wyt2 ~]# ls /usr/local/
bin  etc  games  harbor  include  lib  lib64  libexec  sbin  share  src
[root@wyt2 ~]# cd /usr/local/harbor/
[root@wyt2 harbor]# ls
common.sh             harbor.yml.tmpl  LICENSE
harbor.v2.0.2.tar.gz  install.sh       prepare
[root@wyt2 harbor]# cp harbor.yml.tmpl harbor.yml
[root@wyt2 harbor]# ls
common.sh             harbor.yml       install.sh  prepare
harbor.v2.0.2.tar.gz  harbor.yml.tmpl  LICENSE
[root@wyt2 harbor]# vim harbor.yml
hostname: 192.168.232.129 //主机名改本机IP
//注释下列内容
#https:
#  port: 443
#  certificate: /your/certificate/path
#  private_key: /your/private/key/path
[root@wyt2 harbor]# ./install.sh
[root@wyt2 harbor]# ss -antl
State       Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN      0      128      *:22                   *:*                  
LISTEN      0      100    127.0.0.1:25                   *:*                  
LISTEN      0      128    127.0.0.1:1514                 *:*                  
LISTEN      0      128     :::80                  :::*                  
LISTEN      0      128     :::22                  :::*                  
LISTEN      0      100    ::1:25                  :::*      

使用IP登录管理Harbor:
在这里插入图片描述
登录成功后界面:
在这里插入图片描述
创建用户
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
新建项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
把刚创建的用户加入项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[root@wyt1 ~]# docker tag nginx 192.168.232.129/nginx/nginx:v0.1 //生成镜像
[root@wyt1 ~]# docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
192.168.232.129/nginx/nginx   v0.1                4bb46517cac3        2 weeks ago         133MB
nginx                         latest              4bb46517cac3        2 weeks ago         133MB

[root@wyt1 ~]# vim /etc/docker/daemon.json //修改配置文件
{
    "registry-mirrors": ["https://0v0l236l.mirror.aliyuncs.com"],
    "insecure-registries": ["192.168.232.129"] //添加此行
}
[root@wyt1 ~]# systemctl restart docker

[root@wyt1 ~]# docker login 192.168.232.129  //登录官网
Username: wang_yitong //用户名
Password:             //密码
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
[root@wyt1 ~]# docker push 192.168.232.129/nginx/nginx:v0.1 //上传镜像
The push refers to repository [192.168.232.129/nginx/nginx]
550333325e31: Pushed 
22ea89b1a816: Pushed 
a4d893caa5c9: Pushed 
0338db614b95: Pushed 
d0f104dc0a1f: Pushed 
v0.1: digest: sha256:179412c42fe3336e7cdc253ad4a2e03d32f50e3037a860cf5edbeb1aaddb915c size: 1362

在官网查看是否上传成功
在这里插入图片描述
使用Harbor的注意事项:

  • 在客户端上传镜像时一定要记得执行docker login进行用户认证,否则无法直接push
  • 在客户端使用的时候如果不是用的https则必须要在客户端的/etc/docker/daemon.json配置文件中配置insecure-registries参数
  • 数据存放路径应在配置文件中配置到一个容量比较充足的共享存储中
  • Harbor是使用docker-compose命令来管理的,如果需要停止Harbor也应用docker-compose stop来停止,其他参数请–help
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值