学习Docker-Harbor私有仓库 手把手过程(一学就废!)

前言:

Habor是由VMWare公司开源的容器镜像仓库。事实上,Habor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基于角色的访问控制 ,AD/LDAP集成以及审计日志等,足以满足基本企业需求。

Harbor简介

  • 虽然Docker官方提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。
  • Harbor是由VMware公司开源的企业级的Docker
    Registry管理项目,相比docker官方拥有更丰富的权限权利和完善的架构设计,适用大规模docker集群部署提供仓库服务。
  • 它主要提供 Dcoker Registry 管理界面UI,可基于角色访问控制,镜像复制, AD/LDAP
    集成,日志审核等功能,完全的支持中文。

harbor支持以下特性

RBAC 基于角色的权限控制( 是实施面向企业安全策略的一种有效的访问控制方式 )
基于策略的镜像复制
漏扫
LADP/AD支持
镜像删除和垃圾清理
Notary镜像签名
用户界面
审计
RESful api
安装简单(基于compose)

Harbor 部署

环境:
harbor :20.0.0.100 docker-ce、harbor、docker-compose
client : 20.0.0.101 docker-ce

安装compose 和 harbor

在线下载docker-compose包

curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
cd /usr/local/bin/
chmod +x docker-compose   '授权'

解压harbor到/usr/local/

wget http://harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz

tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/

进入harbor修改harbor的参数文件harbor.cfg

vi /usr/local/harbor/harbor.cfg
hostname = 20.0.0.100    #修改为harbor服务器IP地址,不能使用 localhost 或者127.0.0.1

启动harbor

sh /usr/local/harbor/install.sh
....
Creating network "harbor_harbor" with the default driver
Creating harbor-log ... done
Creating harbor-adminserver ... done
Creating harbor-db          ... done
Creating registry           ... done
Creating harbor-ui          ... done
Creating harbor-jobservice  ... done
Creating nginx              ... done

✔ ----Harbor has been installed and started successfully.----

Now you should be able to visit the admin portal at http://20.0.0.100. 
For more details, please visit https://github.com/vmware/harbor .

在这里插入图片描述
查看镜像,容器
在这里插入图片描述
在这里插入图片描述

测试harbor 图形化管理

谷歌测试http://20.0.0.100 登录UI界面。
在这里插入图片描述
在harbor.cfg文件里可以找到登录UI界面的默认用户、密码。
在这里插入图片描述
创建一个项目aaa测试私有仓库的操作
在这里插入图片描述
Harbor端服务器本地上传镜像

此时可以使用Docker命令在本地通过127.0.0.1 来登录和推送镜像,默认情况下,Register服务器在端口80上倾听

终端登录Harbor

docker login -u admin -p Harbor12345 http://127.0.0.1/

在这里插入图片描述
在共有仓库中下载镜像

docker pull cirros

推送镜像到私有仓库

语法格式:docker tag [当前镜像] 仓库IP地址/项目名称/镜像名称

'定义镜像aa'
[root@controller harbor]# docker tag cirros 127.0.0.1/aaa/cirros:aa

'上传/推送镜像'
[root@controller harbor]# docker push 127.0.0.1/aaa/cirros:aa
[root@controller harbor]# docker images
REPOSITORY                  TAG               IMAGE ID       CREATED       SIZE
127.0.0.1/aaa/cirros        aa                f9cae1daf5f6   7 days ago    12.6MB
cirros                      latest            f9cae1daf5f6   7 days ago    12.6MB

在这里插入图片描述

查看Harbor 镜像是否上传成功
在这里插入图片描述

其他终端想下载该镜像可以直接复制该命令(Harbor友好的功能之一)
PULL命令:docker pull 20.0.0.100/aaa/cirros:aa

客户机服务器远程使用Harbor

客户端服务器进行镜像下载、上传

注意:
如果其他客户端上传镜像到 Harbor,就会报
如下错误。出现这问题的原因 Docker Registry 交互默认使用的是 HTTPS,但是搭建私有镜
像默认使用的是 HTTP 服务,所以与私有镜像交互时出现以下错误。
在这里插入图片描述

解决方法:
必须要先指定私有仓库的地址 --insecure-registry

[root@client ~]# vim /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 20.0.0.10 --containerd=/run/containerd/containerd.sock

[root@client ~]# systemctl daemon-reload 
[root@client ~]# systemctl restart docker

再次登录Harbor
在这里插入图片描述

客户端下载、上传镜像到私有仓库

下载私有仓库的镜像
在这里插入图片描述

直接复制pull命令 直接下载

docker pull 20.0.0.100/aaa/cirros:aa

在这里插入图片描述
在这里插入图片描述

上传镜像到私有仓库

'先从官方仓库下载nginx镜像'
docker pull nginx
'镜像打标签'
[root@client1 ~]# docker tag nginx:latest 20.0.0.100/aaa/nginx:aa

'上传到私有仓库'
[root@client1 ~]# docker push 20.0.0.100/aaa/nginx:aa

在这里插入图片描述
客户端harbor 界面验证镜像是否上传到私有仓库。
在这里插入图片描述
切记要注意客户端远程登录私有仓库时,必须先在docker.service文件里指明仓库地址,然后加载并重启docker,之后才能登录。

Harbor 私有仓库管理维护

Harbor 管理维护

  • Harbor私有仓库可以使用docker-compose进行管理,一些基本管理命令如下:
    • 需注意,使用docker-compose命令时,必须在docker-compose.yml相同的目录运行

先关闭所有容器

[root@localhost harbor]# docker-compose down -v

修改配置文件

  • 如上文所说,如修改所需参数,需要重新运行install.sh,如修改可选参数,则需运行脚本 ./prepare 将配置文件内容进行重新生效
[root@localhost harbor]# ./prepare

重新启动所有容器

[root@localhost harbor]# docker-compose up -d

创建Harbor用户

aaa项目 添加用户

邮箱最后改为[email protected] 当时创建不了
在这里插入图片描述
需要给与用户管理项目的权限
在这里插入图片描述

使用新用户登录

  • 首先现登出admin账户(在客户端操作)
'首先退出已登陆的账号'
[root@client1 ~]# docker logout 20.0.0.100

在这里插入图片描述
使用新用户登录(切换用户身份)

[root@client1 ~]# docker login 20.0.0.100
Username: xxz
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

在这里插入图片描述
上传一个镜像测试

tag
push

在这里插入图片描述
在这里插入图片描述
尝试设置开发,可以上传镜像 ,访问的话就无权限会报错!
在这里插入图片描述

在这里插入图片描述
denied: requested access to the resource is denied
被拒绝:所请求的对该资源的访问权限被拒绝

猜你喜欢

转载自blog.csdn.net/weixin_50344807/article/details/114880600