精华内容
下载资源
问答
  • Harbor仓库的管理
    千次阅读
    更多相关内容
  • harbor仓库安装包

    2019-01-29 10:59:44
    VMware中国社区团队维护的harbor镜像仓库安装包,需要的朋友请下载哦
  • harbor仓库搭建安装包

    2021-03-15 15:44:31
    harbor-offline-installer-v1.10.2.tgz
  • SpringBoot打包上传到Harbor仓库,实例工程
  • Harbor 仓库使用介绍(高可用配置)

    千次阅读 多人点赞 2022-02-11 14:40:23
    Harbor 是由 VMware 公司使用 Go 语言开发,主要就是用于存放镜像使用,同时我们还可以通过 Web 界面来对存放的镜像进行管理。并且 Harbor 提供的功能有:基于角色的访问控制,镜像远程复制同步,以及审计日志等功能...

    一、Harbor 简介

    Harbor 是由 VMware 公司使用 Go 语言开发,主要就是用于存放镜像使用,同时我们还可以通过 Web 界面来对存放的镜像进行管理。并且 Harbor 提供的功能有:基于角色的访问控制,镜像远程复制同步,以及审计日志等功能。官方文档

    1.Harbor 功能介绍

    1)基于角色的访问控制: 我们可以通过项目来对用户进行权限划分,项目中可以包含多个镜像。

    2)审计管理: 我们可以在用户审计管理中,找到我们所有对镜像仓库做的操作。

    3)镜像复制: 我们可以通过配置,使在两台 Harbor 服务器间实现镜像同步。

    4)漏洞扫描: Harbor 会定期对仓库中的镜像进行扫描,并进行策略检查,以防止部署出易受到攻击的镜像。

    2.Harbor 高可用方式

    目前 Harbor 最常见的高可用方式有两种,分别是:

    1)安装两台 Harbor 仓库,他们共同使用一个存储(一般常见的便是 NFS 共享存储)
    在这里插入图片描述
    2)安装两台 Harbor 仓库,并互相配置同步关系。
    在这里插入图片描述
    因为第一种方式的话,需要额外配置 Redis 和 PostgreSQL 以及 NFS 服务,所以我们下面使用第二种方式进行 Harbor 高可用配置。

    二、Harbor 仓库使用介绍

    准备工作:

    主机名操作系统IP 地址
    NginxCentOS 7.x192.168.1.1
    Harbor-01CentOS 7.x192.168.1.2
    Harbor-02CentOS 7.x192.168.1.3

    1.安装 Docker

    1)安装基础包

    [root@Harbor-01 ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
    

    2)配置 Docker 的 yum

    [root@Harbor-01 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    [root@Harbor-01 ~]# yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
    

    3)安装并启动 Docker

    • 我们可以使用 yum list docker-ce --showduplicates | sort -r 命令来查看 Docker 的所有版本。
    [root@Harbor-01 ~]# yum -y install docker-ce-19.03.12 docker-ce-cli-19.03.12
    [root@Harbor-01 ~]# systemctl enable docker --now									# 启动并配置开机自启动
    

    2.安装 Docker-Compose

    [root@Harbor-01 ~]# wget "https://github.com/docker/compose/releases/download/v2.3.2/docker-compose-$(uname -s)-$(uname -m)" -O /usr/local/bin/docker-compose	
    [root@Harbor-01 ~]# chmod +x /usr/local/bin/docker-compose
    [root@Harbor-01 ~]# docker-compose --version
    

    3.配置 Harbor

    1)安装 Harbor

    [root@Harbor-01 ~]# wget https://github.com/goharbor/harbor/releases/download/v2.3.1/harbor-offline-installer-v2.3.1.tgz  
    [root@Harbor-01 ~]# tar zxf harbor-offline-installer-v2.3.1.tgz
    

    2)修改 Harbor 配置文件

    [root@Harbor-01 ~]# cd harbor/
    [root@Harbor-01 ~]# cp harbor.yml.tmpl harbor.yml
    [root@Harbor-01 ~]# sed -i 's/reg.mydomain.com/192.168.1.2/' harbor.yml					# 修改 Harbor 主机名
    [root@Harbor-01 ~]# mkdir -p /app/harbor/data
    [root@Harbor-01 ~]# sed -i '/data_volume/s/\/data/\/app\/harbor\/data/' harbor.yml		# 修改存储目录
    

    3)启动 Harbor

    [root@Harbor-01 ~]# ./install.sh
    

    在这里插入图片描述
    启动时出现:ERROR:root:Error: The protocol is https but attribute ssl_cert is not set 报错,这个报错是因为 Harbor 配置文件里的 HTTPS 相关配置 并没有进行修改或是关闭处理。
    在这里插入图片描述
    重新安装即可。
    在这里插入图片描述
    验证:http://192.168.1.2(默认的账号密码为:admin/Harbor12345
    在这里插入图片描述

    4.Harbor 高可用配置

    1)安装 Nginx 服务

    [root@Nginx ~]# yum -y install pcre-devel zlib-devel popt-devel openssl-devel openssl
    [root@Nginx ~]# wget http://www.nginx.org/download/nginx-1.21.0.tar.gz
    [root@Nginx ~]# ls
    anaconda-ks.cfg  nginx-1.21.0.tar.gz
    [root@Nginx ~]# tar zxf nginx-1.21.0.tar.gz -C /usr/src/
    [root@Nginx ~]# cd /usr/src/nginx-1.21.0/
    [root@Nginx nginx-1.21.0]# useradd -M -s /sbin/nologin nginx
    [root@Nginx nginx-1.21.0]# ./configure \
    --prefix=/usr/local/nginx \
    --user=nginx \
    --group=nginx \
    --with-file-aio \
    --with-http_stub_status_module \
    --with-http_gzip_static_module \
    --with-http_flv_module \
    --with-http_ssl_module \
    --with-stream \
    --with-pcre && make && make install
    [root@Nginx nginx-1.21.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
    

    2)修改 Nginx 配置文件

    [root@Nginx ~]# cat <<END >> /usr/local/nginx/conf/nginx.conf
    stream {
        upstream harbor {
            server 192.168.1.2:80;
            server 192.168.1.3:80 backup;									# 备用服务器
        }
        server {
            listen 5000;
            proxy_pass harbor;
            proxy_timeout 300s;
            proxy_connect_timeout 5s;
        }
    }
    END
    [root@Nginx ~]# nginx -s reload
    [root@Nginx ~]# echo "192.168.1.1 harbor.tianya.com" >> /etc/hosts
    
    • 上面配置 backup(备用)的原因,主要就是因为 Harbor 需要使用账号密码来进行验证。

    也就是说,当我们登录到其中一台 Harbor 主机上,可能还会轮询到另一台 Harbor 主机上,但是这另一台 Harbor 主机并没有使用账号密码来进行验证。可能就会阶段性的出现 401 Unauthorized(认证失败)错误码。
    在这里插入图片描述

    3)Harbor 界面配置

    1)创建一个新的项目:http://192.168.1.2
    在这里插入图片描述
    2)在仓库管理新建一个目标
    在这里插入图片描述
    3)在复制管理新建一个规则
    在这里插入图片描述
    在这里插入图片描述

    • 因为我们做的是基于双主的 Harbor 高可用,所以需要在备用的 Harbor 上也执行下上面的步骤。

    5.验证

    1)在 Docker 上配置 Harbor 仓库

    [root@Harbor-01 ~]# cat <<END > /etc/docker/daemon.json
    {
        "registry-mirrors": [
            "https://ipbtg5l0.mirror.aliyuncs.com"
        ],
        "insecure-registries": [
            "http://harbor.tianya.com:5000"
        ]
    }
    END
    [root@Harbor-01 ~]# systemctl daemon-reload && systemctl restart docker
    [root@Harbor-01 ~]# docker login http://harbor.tianya.com:5000
    Username: admin
    Password: Harbor12345
    

    2)验证推送

    [root@Harbor-01 ~]# docker pull nginx:1.18.0
    [root@Harbor-01 ~]# docker tag nginx:1.18.0 harbor.tianya.com:5000/kubernetes/nginx:1.18.0
    [root@Harbor-01 ~]# docker push harbor.tianya.com:5000/kubernetes/nginx:1.18.0
    

    在这里插入图片描述
    3)验证高可用

    [root@Harbor-01 ~]# cd harbor/
    [root@Harbor-01 ~]# docker-compose down												# 关闭 Harbor
    [root@Harbor-02 ~]# docker pull harbor.tianya.com:5000/kubernetes/nginx:1.18.0
    

    在这里插入图片描述

    展开全文
  • docker容器-Harbor仓库

    2021-12-03 16:27:15
    一、Harbor 1、Harbor介绍 2、Harbor 的特性 3、Harbor构成 二、部署 1、部署 Docker-Compose 服务 2、客户端上传镜像 三、维护管理 Harbor 1、通过 Harbor Web 创建项目 2、创建 Harbor 用户 总结 上线...

    目录

    一、Harbor

    1、Harbor介绍

    2、Harbor 的特性

    3、Harbor构成

    二、部署

    1、部署 Docker-Compose 服务

    2、客户端上传镜像

    三、维护管理 Harbor

    1、通过 Harbor Web 创建项目

    2、创建 Harbor 用户

    总结


    上线的发布的几种方式有滚动、蓝绿、金丝雀/灰度,同时也要准备随时回滚方案,简单说一下各种上线发布,蓝绿就是我们基本上把业务流量分成两半,一半跑新系统,一半旧系统,最终完成上线升级;滚动是先启动一台新版本,再停止一台老版本,然后再启动一台新版本,再停止一台老版本,直到升级完成;灰度和金丝雀大概就是先启动一个新版本应用,但是并不直接将流量切过来,而是测试人员对新版本进行线上测试,启动的这个新版本应用,然后在分少部分流量,等稳定后,在分小部分,比较谨慎

    一、Harbor

    1、Harbor介绍

    Harbor 是 VMware 公司开源的企业级 Docker Registry 项目,其目标是帮助用户迅速搭建一个企业级的 Docker Registry 服务。
    Harbor 以 Docker 公司开源的 Registry 为基础,提供了图形管理 UI 、基于角色的访问控制(Role Based AccessControl)、AD/LDAP 集成、以及审计日志(Auditlogging)等企业用户需求的功能,同时还原生支持中文。
    Harbor 的每个组件都是以 Docker 容器的形式构建的,使用 docker-compose 来对它进行部署。用于部署 Harbor 的 docker-compose 模板位于 harbor/docker-compose.yml

    2、Harbor 的特性

    基于角色控制:用户和仓库都是基于项目进行组织的,而用户在项目中可以拥有不同的权限。
    基于镜像的复制策略:镜像可以在多个 Harbor 实例之间进行复制(同步)。
    支持 LDAP/AD:Harbor 可以集成企业内部已有的 AD/LDAP(类似数据库的一张表),用于对已经存在的用户认证和管理。
    镜像删除和垃圾回收:镜像可以被删除,也可以回收镜像占用的空间。
    图形化用户界面:用户可以通过浏览器来浏览,搜索镜像仓库以及对项目进行管理。
    审计管理:所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
    支持 RESTful API:RESTful API 提供给管理员对于 Harbor 更多的操控, 使得与其它管理软件集成变得更容易。
    Harbor 和 docker registry 的关系:Harbor 实质上是对 docker registry 做了封装,扩展了自己的业务模板

    3、Harbor构成

    Harbor 在架构上主要有 Proxy、Registry、Core services、Database(Harbor-db)、Log collector(Harbor-log)、Job services 六个组件

    img

    1.所有的请求或认为的操作都会首先交给proxy(反向代理)
    
    2.proxy会先将请求转发给后端Core services,Core services 中包含 UI、token(身份验证服务)、webhook(网站的一些服务功能)
    
    3.转发给registry(镜像存储),若需要下载镜像等权限操作,需要通过Core services中的token令牌的身份验证服务才行
    
    4.每一次下载和上传都产生操作记录,生成日志,保存至database中
    
    5.database记录保存镜像的元信息及用户与组的身份信息,通过验证授权才能允许相关操作
    

    二、部署

    Harbor 服务器192.168.10.20docker-ce、docker-compose、harbor-offline-v1.2.2
    client 服务器192.168.10.30

    docker-ce

    1、部署 Docker-Compose 服务

    #wget http://101.34.22.188/docker-compose/docker-compose -P /usr/local/bin
    [root@c7-1 ~]#curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
    [root@c7-1 ~]#chmod +x /usr/local/bin/docker-compose 
    [root@c7-1 ~]#docker-compose -v
    docker-compose version 1.21.1, build 5a3f1a3
    

    下载或上传 Harbor 安装程序

    #wget http://101.34.22.188/harbor/harbor-offline-installer-v1.2.2.tgz -P /opt
    #wget http://harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz
    
    [root@c7-1 ~]#cd /opt
    [root@c7-1 /opt]#rz -E
    #传入 harbor 安装包 harbor-offline-installer-v1.2.2.tgz
    [root@c7-1 /opt]#tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/
    

    修改 harbor 安装的配置文件

    [root@c7-1 /opt]#vim /usr/local/harbor/harbor.cfg 
    #5行,修改设置为 Harbor 服务器的 IP 地址或者域名
    hostname = 192.168.10.20
    #59行,指定管理员的初始密码,默认的用户名/密码是 admin/Harbor12345
    harbor_admin_password = Harbor12345
    

    harbor.cfg 配置文件中的两类参数

    关于 harbor.cfg 配置文件中有两类参数:所需参数和可选参数
    
    hostname:用于访问用户界面和 register 服务。它应该是目标机器的 IP 地址或完全限定的域名(FQDN),例如 192.168.80.10 或 hub.kgc.cn。不要使用 localhost 或 127.0.0.1 为主机名。
    
    ui_url_protocol:http 或 https(默认为 http),用于访问 UI 和令牌/通知服务的协议。如果公证是启用状态,则此参数必须为 https。
    
    max_job_workers:镜像复制作业线程。
    
    db_password:用于 db_auth 的 MySQL 数据库 root 用户的密码。
    
    customize_crt:该属性可设置为打开或关闭,默认打开。打开此属性时,准备脚本创建私钥和根证书,用于生成/验证注册表令牌。当由外部来源提供密钥和根证书时,将此属性设置为 off。
    
    ssl_cert:SSL 证书的路径,仅当协议设置为 https 时才应用。
    
    secretkey_path:用于在复制策略中加密或解密远程 register 密码的密钥路径。
    

    可选参数

    这些参数对于更新是可选的,即用户可以将其保留为默认值,并在启动 Harbor 后在 Web UI 上进行更新。如果进入 Harbor.cfg,只会在第一次启动 Harbor 时生效,随后对这些参数的更新,Harbor.cfg 将被忽略。
      如果选择通过 UI 设置这些参数,请确保在启动 Harbor 后立即执行此操作。具体来说,必须在注册或在 Harbor 中创建任何新用户之前设置所需的 auth_mode。当系统中有用户时(除了默认的 admin 用户),auth_mode 不能被修改。 具体参数如下:
    
    Email:Harbor 需要该参数才能向用户发送“密码重置”电子邮件,并且只有在需要该功能时才启用。请注意,在默认情况下 SSL 连接时没有启用。如果 SMTP 服务器需要 SSL,但不支持 STARTTLS,那么应该通过设置启用 SSL email_ssl = TRUE。
    harbour_admin_password:管理员的初始密码,只在 Harbour 第一次启动时生效。之后, 此设置将被忽略,并且应在 UI 中设置管理员的密码。请注意,默认的用户名/密码是 admin/Harbor12345。
    auth_mode:使用的认证类型,默认情况下,它是 db_auth,即凭据存储在数据库中。对于 LDAP 身份验证,请将其设置为 ldap_auth。
    self_registration:启用/禁用用户注册功能。禁用时,新用户只能由 Admin 用户创建,只有管理员用户可以在 Harbour 中创建新用户。注意:当 auth_mode 设置为 ldap_auth 时,自注册功能将始终处于禁用状态,并且该标志被忽略。
    Token_expiration:由令牌服务创建的令牌的到期时间(分钟),默认为 30 分钟。
    project_creation_restriction:用于控制哪些用户有权创建项目的标志。默认情况下,每个人都可以创建一个项目。如果将其值设置为 “adminonly”,那么只有 admin 可以创建项目。
    verify_remote_cert:打开或关闭,默认打开。此标志决定了当 Harbor 与远程 register 实例通信时是否验证 SSL/TLS 证书。 将此属性设置为 off 将绕过 SSL/TLS 验证,这在远程实例具有自签名或不可信证书时经常使用。
      另外,默认情况下,Harbor 将镜像存储在本地文件系统上。在生产环境中,可以考虑使用其他存储后端而不是本地文件系统,如 S3、Openstack Swif、Ceph 等对象存储。但需要更新 common/templates/registry/config.yml 文件。
    

    启动 harbor

    [root@c7-1 ~]#cd /usr/local/harbor/
    [root@c7-1 /usr/local/harbor]#ls
    common                     docker-compose.yml     harbor.v1.2.2.tar.gz  NOTICE
    docker-compose.clair.yml   harbor_1_1_0_template  install.sh            prepare
    docker-compose.notary.yml  harbor.cfg             LICENSE               upgrade
    
    [root@c7-1 /usr/local/harbor]#./install.sh
    ......
    ✔ ----Harbor has been installed and started successfully.----
    
    Now you should be able to visit the admin portal at http://192.168.10.20. 
    For more details, please visit https://github.com/vmware/harbor .
    
    [root@c7-1 /usr/local/harbor]#docker images
    REPOSITORY                  TAG               IMAGE ID       CREATED        SIZE
    nginx                       latest            ea335eea17ab   2 weeks ago    141MB
    registry                    latest            b8604a3fe854   2 weeks ago    26.2MB
    192.168.10.20:5000/centos   test1             eeb6ee3f44bd   2 months ago   204MB
    vmware/harbor-log           v1.2.2            36ef78ae27df   4 years ago    200MB
    vmware/harbor-jobservice    v1.2.2            e2af366cba44   4 years ago    164MB
    vmware/harbor-ui            v1.2.2            39efb472c253   4 years ago    178MB
    vmware/harbor-adminserver   v1.2.2            c75963ec543f   4 years ago    142MB
    vmware/harbor-db            v1.2.2            ee7b9fa37c5d   4 years ago    329MB
    vmware/nginx-photon         1.11.13           6cc5c831fc7f   4 years ago    144MB
    vmware/registry             2.6.2-photon      5d9100e4350e   4 years ago    173MB
    vmware/postgresql           9.6.4-photon      c562762cbd12   4 years ago    225MB
    vmware/clair                v2.0.1-photon     f04966b4af6c   4 years ago    297MB
    vmware/harbor-notary-db     mariadb-10.1.10   64ed814665c6   4 years ago    324MB
    vmware/notary-photon        signer-0.5.0      b1eda7d10640   4 years ago    156MB
    vmware/notary-photon        server-0.5.0      6e2646682e3c   4 years ago    157MB
    photon                      1.0               e6e4e4a2ba1b   5 years ago    128MB
    
    [root@c7-1 /usr/local/harbor]#docker ps -a
    CONTAINER ID   IMAGE                              COMMAND                  CREATED              STATUS              PORTS                                                                                                                 NAMES
    00d3e2e74c23   vmware/nginx-photon:1.11.13        "nginx -g 'daemon of…"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:4443->4443/tcp, :::4443->4443/tcp   nginx
    7778c13a8990   vmware/harbor-jobservice:v1.2.2    "/harbor/harbor_jobs…"   About a minute ago   Up About a minute                                                                                                                         harbor-jobservice
    479134517ebb   vmware/harbor-ui:v1.2.2            "/harbor/harbor_ui"      About a minute ago   Up About a minute                                                                                                                         harbor-ui
    0c99fc134e9f   vmware/registry:2.6.2-photon       "/entrypoint.sh serv…"   About a minute ago   Up About a minute   5000/tcp                                                                                                              registry
    9b3442b48fce   vmware/harbor-db:v1.2.2            "docker-entrypoint.s…"   About a minute ago   Up About a minute   3306/tcp                                                                                                              harbor-db
    cdd81206d44f   vmware/harbor-adminserver:v1.2.2   "/harbor/harbor_admi…"   About a minute ago   Up About a minute                                                                                                                         harbor-adminserver
    1a2a543cf2b2   vmware/harbor-log:v1.2.2           "/bin/sh -c 'crond &…"   About a minute ago   Up About a minute   127.0.0.1:1514->514/tcp                                                                                               harbor-log
    

     注:启动 harbor 前需删除 registry 镜像/容器,否则无法生成新的 registry 镜像。

     查看 harbor 启动镜像

    [root@c7-1 /usr/local/harbor]#docker-compose ps
           Name                     Command               State                       Ports                    
    -----------------------------------------------------------------------------------------------------------
    harbor-adminserver   /harbor/harbor_adminserver       Up                                                   
    harbor-db            docker-entrypoint.sh mysqld      Up      3306/tcp                                     
    harbor-jobservice    /harbor/harbor_jobservice        Up                                                   
    harbor-log           /bin/sh -c crond && rm -f  ...   Up      127.0.0.1:1514->514/tcp                      
    harbor-ui            /harbor/harbor_ui                Up                                                   
    nginx                nginx -g daemon off;             Up      0.0.0.0:443->443/tcp,:::443->443/tcp,        
                                                                  0.0.0.0:4443->4443/tcp,:::4443->4443/tcp,    
                                                                  0.0.0.0:80->80/tcp,:::80->80/tcp             
    registry             /entrypoint.sh serve /etc/ ...   Up      5000/tcp                   
    

    创建一个新项目

    浏览器访问:http://192.168.10.20/ 登录 harbor web ui 界面,默认的管理员用户名和密码是 admin/Harbor12345

    在这里插入图片描述

    输入用户名和密码登录界面后可以创建一个新项目。点击 +项目 按钮
    
    填写项目名称为 test_project,点击 确定 按钮,创建新项目  选择公开
    
    此时可使用 Docker 命令在本地通过 127.0.0.1 来登录和推送镜像。默认情况下,Registry 服务器在端口 80 上侦听

    在这里插入图片描述

     登录 Harbor

    [root@c7-1 ~]#docker login -uadmin -pHarbor12345 http://127.0.0.1
    WARNING! Using --password via the CLI is insecure. Use --password-stdin.
    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@c7-1 ~]#docker pull nginx:latest
    ......
    [root@c7-1 ~]#docker images | grep nginx
    nginx                       latest            f652ca386ed1   19 hours ago   141MB
    vmware/nginx-photon         1.11.13           6cc5c831fc7f   4 years ago    144MB
    

    将镜像打标签

    [root@c7-1 ~]#docker tag nginx:latest 127.0.0.1/test_project/nginx:v1
    [root@c7-1 ~]#docker images | grep nginx
    127.0.0.1/test_project/nginx   v1                f652ca386ed1   19 hours ago   141MB
    nginx                          latest            f652ca386ed1   19 hours ago   141MB
    vmware/nginx-photon            1.11.13           6cc5c831fc7f   4 years ago    144MB
    

    上传镜像到 Harbor

    [root@c7-1 ~]#docker push 127.0.0.1/test_project/nginx:v1
    The push refers to repository [127.0.0.1/test_project/nginx]
    2bed47a66c07: Pushed 
    82caad489ad7: Pushed 
    d3e1dca44e82: Pushed 
    c9fcd9c6ced8: Pushed 
    0664b7821b60: Pushed 
    9321ff862abb: Pushed 
    v1: digest: sha256:4424e31f2c366108433ecca7890ad527b243361577180dfd9a5bb36e828abf47 size: 1570
    

    web 查看 project 状态

    在这里插入图片描述

    2、客户端上传镜像

    以上操作都是在 Harbor 服务器本地操作。如果其他客户端登录到 Harbor,就会报如下错误。出现这问题的原因为 Docker Registry 交互默认使用的是 HTTPS,但是搭建私有镜像默认使用的是 HTTP 服务,所以与私有镜像交互时出现以下错误:
    
    客户端
    [root@client ~]#docker login -uadmin -pHarbor12345 http://192.168.10.20
    WARNING! Using --password via the CLI is insecure. Use --password-stdin.
    Error response from daemon: Get "https://192.168.10.20/v2/": dial tcp 192.168.10.20:443: connect: connection refused
    
    

    在 Docker 客户端配置操作

    客户端(不行在服务端也配置)
    [root@client ~]#vim /usr/lib/systemd/system/docker.service
     
    #13行修改
    ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.10.20 --containerd=/run/containerd/containerd.sock
    #或修改为 ExecStart=/usr/bin/dockerd --insecure-registry 192.168.10.20
    
    或者
    
    [root@client ~]#cat /etc/docker/daemon.json 
    {
    "insecure-registries": ["192.168.10.20"],
    "registry-mirrors": ["https://4iv7219l.mirror.aliyuncs.com"]
    }
    

    重启 Docker 再次登录

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

     再次登录 Harbor

    [root@client ~]#docker login -uadmin -pHarbor12345 http://192.168.10.20
    WARNING! Using --password via the CLI is insecure. Use --password-stdin.
    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@client ~]#docker images
    REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
    [root@client ~]#docker pull 192.168.10.20/test_project/nginx:v1
    ......
    [root@client ~]#docker images
    REPOSITORY                         TAG       IMAGE ID       CREATED        SIZE
    192.168.10.20/test_project/nginx   v1        f652ca386ed1   20 hours ago   141MB
    

    在这里插入图片描述

     上传镜像进行测试

    [root@client ~]#docker pull cirros
    ......
    [root@client ~]#docker tag cirros:latest 192.168.10.20/test_project/cirros:v1
    [root@client ~]#docker images
    REPOSITORY                          TAG       IMAGE ID       CREATED        SIZE
    192.168.10.20/test_project/nginx    v1        f652ca386ed1   20 hours ago   141MB
    192.168.10.20/test_project/cirros   v1        f9cae1daf5f6   8 months ago   12.6MB
    cirros                   
    [root@client ~]#docker push 192.168.10.20/test_project/cirros:v1
    ......
    

    在这里插入图片描述

    三、维护管理 Harbor

    1、通过 Harbor Web 创建项目

    在 Harbor 仓库中,任何镜像在被 push 到 regsitry 之前都必须有一个自己所属的项目。
    单击 +项目,填写项目名称,项目级别若设置为 私有,则不勾选。如果设置为 公共 仓库,则所有人对此项目下的镜像拥有读权限,命令行中不需要执行 Docker login 即可下载镜像,镜像操作与 Docker Hub 一致。
     

    2、创建 Harbor 用户

    创建用户并分配权限

    1) 在 Web 管理界面中单击系统管理 -> 用户管理 -> +用户
    2) 填写用户名为 "test",邮箱为 "xxx@test.com",全名为 "test",密码为 "Test12345" (需大小写英文,数字以及至少8位字符),注释为 "test"(可省略)。
    附:用户创建成功后,单击左侧 "..." 按钮可将上述创建的用户设置为管理员角色或进行删除操作.
    

    在这里插入图片描述

     添加项目成员

    单击项目 -> test_project -> 成员 -> + 成员,填写上述创建的用户 test 并分配角色为 "开发人员"。
    

    在这里插入图片描述

     在客户端上使用普通账户操作镜像

    删除全部本地镜像
    [root@client ~]#docker rmi -f `docker images -q`
    ......
    [root@client ~]#docker images
    REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
    
    退出当前用户,然后使用上述创建的账户 test 登录
    [root@client ~]#docker logout 192.168.10.20
    Removing login credentials for 192.168.10.20
    [root@client ~]#docker login -utest -pTest12345 http://192.168.10.20
    ......
    Login Succeeded
    
    下载 harbor 仓库镜像
    root@client ~]#docker pull 192.168.10.20/test_project/cirros:v1
    ......
    [root@client ~]#docker images
    REPOSITORY                          TAG       IMAGE ID       CREATED        SIZE
    192.168.10.20/test_project/cirros   v1        f9cae1daf5f6   8 months ago   12.6MB
    
    上传镜像至 harbor 仓库
    root@client ~]#docker tag 192.168.10.20/test_project/cirros:v1 192.168.10.20/test_project/cirros:v2
    [root@client ~]#docker images
    REPOSITORY                          TAG       IMAGE ID       CREATED        SIZE
    192.168.10.20/test_project/cirros   v1        f9cae1daf5f6   8 months ago   12.6MB
    192.168.10.20/test_project/cirros   v2        f9cae1daf5f6   8 months ago   12.6MB
    [root@client ~]#docker push 192.168.10.20/test_project/cirros:v2
    ......
    

    在这里插入图片描述

     修改 harbor.cfg 配置文件

    要更改 Harbor 的配置文件中的可选参数时,需先停止现有的 Harbor 实例并更新 Harbor.cfg;然后运行 prepare 脚本来填充配置;最后重新创建并启动 Harbour 的实例。

    使用 docker-compose 管理 Harbor 时,必须在与 docker-compose.yml 相同的目录中运行。
    [root@c7-1 ~]#cd /usr/local/harbor/
    [root@c7-1 /usr/local/harbor]#docker-compose down -v
    Stopping harbor-jobservice  ... done
    Stopping nginx              ... done
    Stopping harbor-ui          ... done
    ......
    Removing network harbor_harbor
    [root@c7-1 /usr/local/harbor]#vim harbor.cfg
    [root@c7-1 /usr/local/harbor]#./prepare 
    Clearing the configuration file: ./common/config/adminserver/env
    ......
    The configuration files are ready, please use docker-compose to start the service.
    
    [root@c7-1 /usr/local/harbor]#docker-compose up -d
    
    
    如果有以下报错,需要开启防火墙 firewalld 服务解决
    Creating network "harbor_harbor" with the default driver
    ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule:  (iptables failed: iptables --wait -t nat -I DOCKER -i br-b53c314f45e8 -j RETURN: iptables: No chain/target/match by that name.
     (exit status 1))
     
    > systemctl restart firewalld.service
    > docker-compose up -d
    
    
    

    移除 Harbor 服务容器同时保留镜像数据/数据库,并进行迁移

    移除 Harbor 服务容器
    [root@c7-1 ~]#cd /usr/local/harbor/
    [root@c7-1 /usr/local/harbor]#docker-compose down -v
    ......
    
    把项目中的镜像数据进行打包
    持久数据,如镜像,数据库等在宿主机的 /data/ 目录下,日志在宿主机的 /var/log/Harbor/ 目录下
    [root@c7-1 /usr/local/harbor]#ls /data/registry/docker/registry/v2/repositories/test_project/
    cirros  nginx
    [root@c7-1 /usr/local/harbor]#cd /data/registry/docker/registry/v2/repositories/test_project/
    [root@c7-1 /data/registry/docker/registry/v2/repositories/test_project]#tar zcvf test-registry.tar.gz ./*
    ......
    

    如需重新部署,需要移除 Harbor 服务器全部数据

    [root@c7-1 ~]#cd /usr/local/harbor
    [root@c7-1 /usr/local/harbor]#docker-compose down -v
    Stopping nginx              ... done
    ......
    Removing network harbor_harbor
    [root@c7-1 /usr/local/harbor]#rm -rf /data/database
    [root@c7-1 /usr/local/harbor]#rm -rf /data/registry
    

    总结

    1、docker -harbor 镜像仓库——>是本地私有镜像仓库用于保存项目/企业/平台内部经常使用的镜像/自定义的镜像,用于给docker /K8S 使用

    2、docker-harbor 服务由多个子功能模块组成,例如: UI NGINX MYSQL registry proxy adminserver jobserver , docker -harbor 使用
    docker-compose的方式将以上的子功能模块以容器的形式部署/展现出来,并且进行统一的编排管理

    3、docker-compose怎么编排管理容器的
    ① docker-compose 可以定义镜像拉取的方式——>1) docker-hub 公共仓库拉取 2) dockerfile 自定义构建镜像
    ②docker-compose可以指定镜像的挂载、镜像中服务的端口暴露、可以指定network网络、可以指定env环境变量、可以指定重启策略等等

    docker -compose就是用来批量管理镜像、容器的一个技术

    4、docker -harbor使用
    ①tar解压
    ②上传docker-compose 命令工具,给与执行权限
    ③执行install.sh 脚本
    ④在docker的systemd 管理服务的docker . service 启动文件中,添加insecure- registry 192.168.226.128 (harbor仓库位置) 并且重载守护进程
    systemctl daemon- reload和重启容器docker restart docker让本地的docker可以识别并登陆本地私有仓库(docker login )
    ⑤上传镜像必要操作: docker tag source_ image name:tag 192.168.226.128/project_ name/ image_ name : TAG
    再docker push 192.168.226.128/project_ name/ image_ name : TAG

    5、harbor-UI界面操作中
    ①可以进行用户/角色的创建和权限管理
    ②认证管理:数据库/ldap
    ③镜像操作日志管理
    ④token令牌管理

    6、harbor:高可用(Keepalived)、认证(CA/LDAP)、备份(备份到其他宿主机)
     

    展开全文
  • 搭建Harbor仓库

    2022-01-10 10:32:48
    前期安装包准备 环境说明:LinuxCentos7.6 1.docker安装包 登录网站:https://download.docker.com/linux/static/stable/x86_64/,下载对应的二进制安装包,然后... 2.docker-compose安装包 ...3.harbor安装包 登录g

    前期安装包准备

    环境说明:LinuxCentos7.6

    1.docker安装包

    登录网站:https://download.docker.com/linux/static/stable/x86_64/,下载对应的二进制安装包,然后将其上传至服务器解压

    2.docker-compose安装包

    登录github.com搜索compose,下载对应版本的compose执行文件 https://github.com/docker/compose/releases

    3.harbor安装包

    登录github.com搜索harbor,下载离线安装包,得到harbor-offline-installer-v1.7.1,将其上传至服务器后解压

    https://github.com/goharbor/harbor/releases 

     安装步骤,需要按照顺序安装,因为harbor依赖dock-compose,如果不先安装compose会无法安装harbor。安装前需要先关闭SELINUX

    #sed -i 's#SELINUX=enforcing#SELINUX=disabled#g'

    # etc/sysconfig/selinux

    #setenforce 0

    #getenforce (返回结果为Permissive即表示已关闭)

    关闭防火墙:systemctl stop firewalld

    1、docker安装

    1.1 解压docker安装包

    #tar -zxvf docker-18.09.7.tgz

    1.2 将解压后的docker文件夹内所有文件cp至/usr/bin/下

    #cp docker/* /usr/bin/

    1.3 在/usr/lib/systemd/system/目录下创建名位docker.service的文件,键入以下内容:

    #tee /usr/lib/systemd/system/docker.service <<-'EOF'

    [Unit]
    
    Description=Docker Application Container Engine
    
    After=network-online.target
    
    Wants=network-online.target
    
    
    
    [Service]
    
    Type=notify
    
    ExecStart=/usr/bin/dockerd
    
    
    
    [Install]
    
    WantedBy=multi-user.target
    
    EOF

    1.4 因为docker默认使用的是https连接,而harbor默认使用http连接,所以需要修改docker配置标志insecure registry不安全仓库的主机!在/etc/docker/daemon.json写入以下内容,该ip地址需要和本机ip地址一样,即3.2中设置的hostname

    #vim /etc/docker/daemon.json
    {"insecure-registries": ["192.168.1.161"] }

    1.5 重新加载后台程序后启动docker

    #systemctl daemon-reload

    #systemctl start docker

    #systemctl enable docker

    #systemctl status docker

    2、安装docker-compose

    2.1 将下载好的执行文件上传至服务器后重命名为docker-compose

    # mv  docker-compose-Linux-x86_64  docker-compose

    2.2 给文件添加执行权限后将文件拷贝至/usr/bin/目录下

    # chmod +x docker-compose

    # cp docker-compose   /usr/bin

    2.3 查看版本是否成功执行

    # docker-compose -v

    3、harbor安装

    3.1 将安装包解压

    #tar -zxvf harbor-offline-installer-v1.7.1.tgz

    3.2 进入解压后的harbor文件内,修改harbor.cfg内的hostname,将其修改为本机ip地址,修改完毕后执行prepare脚本使配置生效

    #cd harbor

    #vim harbor.cfg

    #./prepare

    3.3 执行安装脚本,该过程会下载所需要的harbor镜像并且启动对应的容器,这一步骤需要保证机器能访问互联网,如果服务器无法联网,则需要提前将需要的docker镜像上传至服务器上再执行安装脚本。

    #./install

    3.4 看到如下步骤即表示安装成功,

    此时打开浏览器输入ip地址看到能成功访问网页,输入账号密码:admin/Harbor12345(默认密码)

     

     

     

    展开全文
  • 搭建harbor仓库

    千次阅读 2022-02-03 15:57:22
    安装harbor wget http://github.com/vmware/harbor/releases/download/v2.0.2/harbor-offline-installer-v2.0.2.tgz tar xvf harbor-offline-installer-v2.0.2.tgz  -C /usr/local/ cd /usr/local/harbor/ mv ...
  • harbor仓库具体使用方法 **[root@server9 harbor]# docker-compose ps** Name Command State Ports ------------------------------------------------------------------------------------
  • Harbor仓库的搭建

    2021-03-22 08:57:35
    harbor介绍1.1 harbor简介1.2 harbor仓库结构1.3 harbor vs registry2. 安装配置harbor3. 配置本地上传文件4. 配置远程上传文件5. 设置harbor私有仓库6. 增加harbor仓库镜像扫描、签名功能 1. harbor介绍 1.1 ...
  • docker harbor仓库介绍

    2021-09-11 20:38:51
    harbor介绍 Docker Harbor有可视化的Web管理界面,可以方便管理Docker镜像,又提供了多个项目的镜像权限管理及控制...私有仓库的镜像,两端打上,局域网的地址,连接在一一块,数据信息的传输通过一条隧道,会通过两层
  • 部署Harbor仓库 下面一步(用的1.8.0版本的harbor) [root@kub-k8s-master ~]# wget https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-offline-installer-v1.8.0.tgz [root@kub-k8s-master ~]...
  • Ubuntu搭建harbor仓库

    千次阅读 2022-01-31 12:20:01
    环境 提示:其他版本方法类似 服务 版本 Ubuntu 16.04.1 docker 18.09.7 docker-compose 1.8.0 harbor 1.7.1 下载 提示:需要配置好本地镜像仓库,指定为阿里云 官网参考:...阿里云下载docker-compose:apt-get ...
  • harbor仓库搭建.doc

    2019-12-17 11:55:04
    harbor容器仓库搭建,
  • Harbor仓库搭建及简单使用

    万次阅读 多人点赞 2019-06-03 14:57:12
    Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker ...
  • 清理Harbor仓库

    千次阅读 2020-08-01 15:18:33
    由于开发和测试环境的发布比较频繁,Harbor仓库在使用一段时间之后,就存储了大量的镜像,占用了比较大的磁盘空间。所以需要通过删除那些时间比较久远的镜像来释放服务器的磁盘空间。 二、处理方法 注:我这边的...
  • Harbor仓库清理

    2022-02-09 19:10:12
    Harbor私有仓库运行一段时间后,仓库中存有大量镜像,会占用太多的存储空间。直接通过Harbor界面删除相关镜像,并不会自动删除存储中的文件和镜像。需要停止Harbor服务,执行垃圾回收命令,进行存储空间清理和回收。...
  • 配置好epel源 略 安装docker-compose yum install -y docker-compose wget ...tar xf harbor-offline-installer-v1.9.1.tgz -C /usr/local cd /usr/local/harbor/ vim harbor.yml #
  • centos7 搭建docker harbor仓库

    千次阅读 2022-02-23 14:44:32
    1570 [root@node2 harbor]# docker push 192.168.164.11/library/busybox [root@node2 harbor]# docker push 192.168.164.11/library/centos7-ssh:v1 5、登录harbor web界面查看镜像是否上传成功 这样harbor仓库就...
  • Docker 搭建 Harbor 仓库

    2021-05-13 15:37:34
    搭建 harbor 仓库 docker 官方提供的私有仓库 registry,用起来虽然简单 ,但在管理的功能上存在不足。Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,harbor使用的是官方的docker registry(v2命名...
  • 在离线手动部署docker镜像仓库——harbor仓库(一)和离线手动部署docker镜像仓库——harbor仓库(二)的实验中,遇到一些harbor仓库部署的问题,在此做个小结。实验环境:harbor服务器系统:CentOS Linux release 7.4....
  • docker-------harbor仓库

    2021-08-03 15:51:00
    Harbor 是VMware公司开源的云本地 registry 仓库,有可视化的Web管理界面,可以方便的管理和储存 Docker 镜像。Harbor 支持在多个仓库直接进行复制镜像,提供用户管理和访问控制和活动审计。 1.Harbor优势 基于角色...
  • 1、Harbor 服务绑定 host [root@localhost harbor]# vi /etc/hosts [root@localhost harbor]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost ...
  • 大家好,我是好学的小师弟,今天和大家分享的是docker仓库-Harbor的实战部署
  • 主旨上一章我们介绍了如何搭建harbor仓库,我们现在看看应该如何进行注册,使用,配置等。环境linux环境 docker环境 harbor仓库新建用户点击 “用户管理” -- “创建用户”新建项目并添加成员点击 “项目” -- ...
  • harbor仓库的构建及简单使用 首先,什么是harbor? Harbor 是由 VMware 公司中国团队为企业用户设计的 Registry server 开源项目,包括了权限管理(RBAC)、LDAP、审计、管理界面、自我注册、HA 等企业必需的功能,...
  • kubernetes学习---harbor仓库的部署

    千次阅读 2022-03-07 18:12:16
    kubernetes学习--harbor仓库的部署
  • 要知道docker官网在国外,仓库也是,那么访问就慢,而且安全性也很重要,这样的情况我们就很有必要搭建一个属于我们自己的harbor仓库,这玩意儿就是用来存放docker镜像的。harbor仓库包括权限管理(RBAC)、LDAP、日志...
  • 一、什么是harbor Harbor 是VMware 公司开源的企业级Docker Registry 项目,其目标是帮助用户迅速搭建一个企业级的Docker Registry服务。 Harbor以Docker 公司开源的Registry 为基础,提供了图形管理UI、基于角色...
  • 注:高版本(14以上)docker执行login命令,默认使用https,且harbor必须使用域名,只是用ip访问是不行的。 假设使用的网址是:www.harbor.mobi,本机ip是172.16.5.45 因为这个网址是虚拟的,所以需要在本机hosts...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,293
精华内容 6,517
关键字:

habor仓库