Docker私有仓库Harbor理论与部署

前言:Harbor 是 Vmwar 公司开源的 企业级的 Docker Registry 管理项目
它主要 提供 Dcoker Registry 管理UI,可基于角色访问控制, AD/LDAP 集成,日志审核等功能,完全的支持中文
Harbor 的所有组件都在 Dcoker 中部署,所以 Harbor 可使用 Docker Compose 快速部署。

文章目录

  • 一、Harbor概述
    • 1.Harbor理解
    • 2.Harbor的优点
    • 3.Harbor的核心组件
    • 4.Harbor配置文件里的参数
      • 1)所需参数
      • 2)可选参数
  • 二、部署Harbor
    • 1.下载Harbor安装程序
    • 2.配置Harbor参数文件
    • 3.启动并登录Harbor
  • 三、使用Harbor
    • 1.本地登录
    • 2.异地登录
  • 四、维护Harbor
    • 1.修改Harbor.cfg配置文件
    • 2.新建用户管理

一、Harbor概述

1.Harbor理解

  • Harbor 就是一个用于存储和分发 Docker 镜像的企业级Registry 服务器
  • Harbor 是 VMware 公司开源的企业级 DockerRegistry 项目,项目地址为 https://github.com/vmware/harbor
  • 其目标是帮助用户迅速搭建一个企业级的 Docker registry 服务。它以 Docker 公司开源的 registry 为基础,提供了管理UI,基于角色的访问控制(Role Based Access Control),AD/LDAP集成、以及审计日志(Auditlogging) 等企业用户需求的功能,同时还原生支持中文。Harbor 的每个组件都是以 Docker 容器的形式构建的,使用 Docker Compose 来对它进行部署

2.Harbor的优点

  • Harbor和Registry都是Docker的镜像仓库,但是Harbor作为更多企业的选择,是因为相比较于Regisrty来说,它具有很多的优势
    • 提供分层传输机制,优化网络传输
      • Docker镜像是是分层的,而如果每次传输都使用全量文件(所以用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的UUID为标识,确定传输的对象
    • 提供WEB界面,优化用户体验
      • 只用镜像的名字来进行上传下载显然很不方便,需要有一个用户界面可以支持登陆、搜索功能,包括区分公有、私有镜像
    • 支持水平扩展集群
      • 当有用户对镜像的上传下载操作集中在某服务器,需要对相应的访问压力作分解
    • 良好的安全机制
      • 企业中的开发团队有很多不同的职位,对于不同的职位人员,分配不同的权限,具有更好的安全性
    • Harbor提供了基于角色的访问控制机制,并通过项目来对镜像进行组织和访问权限的控制
    • kubernetes中通过namespace来对资源进行隔离,在企业级应用场景中,通过将两者进行结合可以有效将kubernetes使用的镜像资源进行管理和访问控制,增强镜像使用的安全性。尤其是在多租户场景下,可以通过租户、namespace和项目相结合的方式来实现对多租户镜像资源的管理和访问控制

3.Harbor的核心组件

  • 架构图
    Docker私有仓库Harbor理论与部署_第1张图片
  • Proxy:他是一个nginx的前端代理,代理Harbor的registry,UI, token等服务
  • db:负责储存用户权限、审计日志、Dockerimage分组信息等数据
  • UI:提供图形化界面,帮助用户管理registry上的镜像, 并对用户进行授权
  • jobsevice:jobsevice是负责镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry,并记录job_log
  • Adminserver:是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候回需要加载adminserver的配置
  • Registry:镜像仓库,负责存储镜像文件
  • Log:为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析

4.Harbor配置文件里的参数

  • 关于 Harbor.cfg 配置文件中有两类参数:所需参数和可选参数

1)所需参数

  • 这些参数需要在配置文件 Harbor.cfg 中设置
  • 如果用户更新它们并运行 install.sh脚本重新安装 Harbour,参数将生效
  • 具体参数如下:
    • hostname:用于访问用户界面和 register 服务。它应该是目标机器的 IP 地址或完全限 定的域名(FQDN)
      例如 192.168.195.128 或 hub.csdn.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 时才应用
    • ssl_cert_key:SSL 密钥的路径,仅当协议设置为 https 时才应用
    • secretkey_path:用于在复制策略中加密或解密远程 register 密码的密钥路径

2)可选参数

  • 这些参数对于更新是可选的,即用户可以将其保留为默认值,并在启动 Harbor 后在 Web UI 上进行更新

  • 如果进入 Harbor.cfg,只会在第一次启动 Harbor 时生效,随后对这些参数 的更新,Harbor.cfg 将被忽略

  • 注意:如果选择通过UI设置这些参数,请确保在启动Harbour后立即执行此操作。具体来说,必须在注册或在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 验证,这在远程实例具有自签名或不可信证书时经常使用
  • 另外,默认情况下,Harbour 将镜像存储在本地文件系统上。在生产环境中,可以考虑 使用其他存储后端而不是本地文件系统,
    如 S3、Openstack Swif、Ceph 等。但需要更新 common/templates/registry/config.yml 文件

二、部署Harbor

  • Harbor 被部署为多个 Docker 容器,因此可以部署在任何支持 Docker 的 Linux 发行版上
  • 服务端主机需要安装 Python、Docker 和 Docker Compose
  • 先将Docker Compose复制到 /usr/local/bin下方便系统识别
[root@promote harbor]# cd /usr/local/bin/
[root@promote bin]# ls
docker-compose
[root@promote bin]# docker-compose -v    //查看版本判断安装是否成功
docker-compose version 1.21.1, build 5a3f1a3

1.下载Harbor安装程序

  • 可以通过wget下载
wget http:// harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz
  • 这里已经准备好压缩包
[root@promote opt]# ls
harbor-offline-installer-v1.2.2.tgz
  • 解压
[root@promote opt]# tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/

2.配置Harbor参数文件

  • Harbor的配置文件为harbor.cfg。此次配置使用http访问。而不是https访问。所以可以不需要证书
  • 关于Harbor.cfg配置文件中的参数,在上面已经介绍过,这里再简单介绍下
hostname = 192.168.170.132    //需要写IP地址或者域名
ui_url_protocol = http   //用于访问UI令牌/通知服务的协议

db_password = root123    //mysql数据库root密码

max_job_workers = 3  //镜像复制作业线程

customize_crt = on   //用于生成/验证注册表令牌

ssl_cert = /data/cert/server.crt   //证书路径,没有目录需要创建
ssl_cert_key = /data/cert/server.key   //密钥路径,没有目录需要创建

secretkey_path = /data   //register密钥路径

admiral_url = NA

clair_db_password = password

#************************BEGIN INITIAL PROPERTIES************************

email_identity = 

email_server = smtp.mydomain.com
email_server_port = 25
email_username = [email protected]
email_password = abc

harbor_admin_password = Harbor12345   //Harbor登录密码

auth_mode = db_auth

ldap_url = ldaps://ldap.mydomain.com

ldap_basedn = ou=people,dc=mydomain,dc=com

ldap_uid = uid 

ldap_scope = 3 

ldap_timeout = 5

self_registration = on

token_expiration = 30

project_creation_restriction = everyone

verify_remote_cert = on

3.启动并登录Harbor

  • 配置完毕后,启动Harbor
[root@promote opt]# sh /usr/local/harbor/install.sh 

[Step 0]: checking installation environment ...

Note: docker version: 19.03.8

Note: docker-compose version: 1.21.1

[Step 1]: loading Harbor images ...
dd60b611baaa: Loading layer 
。。。省略部分内容
[Step 2]: preparing environment ...
Generated and saved secret to file: /data/secretkey
Generated configuration file: ./common/config/nginx/nginx.conf
Generated configuration file: ./common/config/adminserver/env
Generated configuration file: ./common/config/ui/env
Generated configuration file: ./common/config/registry/config.yml
Generated configuration file: ./common/config/db/env
Generated configuration file: ./common/config/jobservice/env
Generated configuration file: ./common/config/jobservice/app.conf
Generated configuration file: ./common/config/ui/app.conf
Generated certificate, key file: ./common/config/ui/private_key.pem, cert file: ./common/config/registry/root.crt
The configuration files are ready, please use docker-compose to start the service.


[Step 3]: checking existing instance of Harbor ...


[Step 4]: starting Harbor ...
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 nginx              ... done
Creating harbor-jobservice  ... done

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

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

  • 查看镜像,可以看到所需要的镜像
  • 来自vmware公司的:jobservice(工作核心容器),registry(仓库),postgresql(数据库),python环境等等
[root@promote bin]# docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
vmware/harbor-log           v1.2.2              36ef78ae27df        2 years ago         200MB
vmware/harbor-jobservice    v1.2.2              e2af366cba44        2 years ago         164MB
vmware/harbor-ui            v1.2.2              39efb472c253        2 years ago         178MB
vmware/harbor-adminserver   v1.2.2              c75963ec543f        2 years ago         142MB
vmware/harbor-db            v1.2.2              ee7b9fa37c5d        2 years ago         329MB
vmware/nginx-photon         1.11.13             6cc5c831fc7f        2 years ago         144MB
vmware/registry             2.6.2-photon        5d9100e4350e        2 years ago         173MB
vmware/postgresql           9.6.4-photon        c562762cbd12        2 years ago         225MB
vmware/clair                v2.0.1-photon       f04966b4af6c        2 years ago         297MB
vmware/harbor-notary-db     mariadb-10.1.10     64ed814665c6        3 years ago         324MB
vmware/notary-photon        signer-0.5.0        b1eda7d10640        3 years ago         156MB
vmware/notary-photon        server-0.5.0        6e2646682e3c        3 years ago         157MB
photon                      1.0                 e6e4e4a2ba1b        3 years ago         128MB

  • 查看容器
  • 通过编排工具使容器的下载与启动
[root@promote bin]# docker ps -a
CONTAINER ID        IMAGE                              COMMAND                  CREATED             STATUS              PORTS                                                              NAMES
7ee73887363e        vmware/harbor-jobservice:v1.2.2    "/harbor/harbor_jobs…"   3 minutes ago       Up 3 minutes                                                                           harbor-jobservice
af1dcf1a3620        vmware/nginx-photon:1.11.13        "nginx -g 'daemon of…"   3 minutes ago       Up 3 minutes        0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp   nginx
2f535eaff0b5        vmware/harbor-ui:v1.2.2            "/harbor/harbor_ui"      3 minutes ago       Up 3 minutes                                                                           harbor-ui
b70afcf6553d        vmware/harbor-db:v1.2.2            "docker-entrypoint.s…"   3 minutes ago       Up 3 minutes        3306/tcp                                                           harbor-db
61521edc3571        vmware/registry:2.6.2-photon       "/entrypoint.sh serv…"   3 minutes ago       Up 3 minutes        5000/tcp                                                           registry
5fe3a34f685d        vmware/harbor-adminserver:v1.2.2   "/harbor/harbor_admi…"   3 minutes ago       Up 3 minutes                                                                           harbor-adminserver
b556a7a38cdd        vmware/harbor-log:v1.2.2           "/bin/sh -c 'crond &…"   3 minutes ago       Up 3 minutes        127.0.0.1:1514->514/tcp                                            harbor-log

  • 也可以用docker-compose ps 查看容器的状态,前提是需要在harbor的目录下
[root@promote bin]# cd /usr/local/harbor/
[root@promote 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, 0.0.0.0:4443->4443/tcp,              
                                                              0.0.0.0:80->80/tcp                                         
registry             /entrypoint.sh serve /etc/ ...   Up      5000/tcp                                                   

  • 如果一切都正常,可以打开浏览器访问 http://192.168.170.132的管理页面,默认的管理员用户名和密码是 admin/Harbor12345
    Docker私有仓库Harbor理论与部署_第2张图片
  • 点击登录后,即可进入Harbor界面
    Docker私有仓库Harbor理论与部署_第3张图片

三、使用Harbor

  • Harbor部署完成后,即可进行使用,下面将介绍如何通过对Harbor的使用来进行一系列的操作,如对镜像的上传与下载等
  • 首先点开项目,点击+项目
    Docker私有仓库Harbor理论与部署_第4张图片
  • 自定义项目名称后点击确定
    Docker私有仓库Harbor理论与部署_第5张图片
  • 创建完成后即可查看相关信息
    Docker私有仓库Harbor理论与部署_第6张图片
  • 下面进入登录

1.本地登录

[root@promote harbor]# 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@promote harbor]# docker pull cirros   //下载镜像
Using default tag: latest
latest: Pulling from library/cirros
f513001ba4ab: Pull complete 
8da581cc9286: Pull complete 
856628d95d17: Pull complete 
Digest: sha256:21874a9fd73378a29345163e026bc9c2a61aef62526f2b4f22a5d488059970f6
Status: Downloaded newer image for cirros:latest
docker.io/library/cirros:latest

[root@promote harbor]# docker tag cirros:latest 127.0.0.1/xiangmu/cirros:v1  //打上标签
[root@promote harbor]# docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
127.0.0.1/xiangmu/cirros    v1                  3c82e4d066cf        6 weeks ago         12.6MB
cirros                      latest              3c82e4d066cf        6 weeks ago         12.6MB

[root@promote harbor]# docker push 127.0.0.1/xiangmu/cirros:v1 
The push refers to repository [127.0.0.1/xiangmu/cirros]
858d98ac4893: Layer already exists 
aa107a407592: Layer already exists 
b993cfcfd8fd: Layer already exists 
v1: digest: sha256:c7d58d6d463247a2540b8c10ff012c34fd443426462e891b13119a9c66dfd28a size: 943
  • 登录私有仓库查看
    Docker私有仓库Harbor理论与部署_第7张图片

2.异地登录

  • 使用另一台客户端,并部署好docker环境
  • 以上操作都是在Harbor服务器本地操作。如果其他客户端上传镜像到Harbor,就会报如下错误。出现这问题的原因Docker Registry 交互默认使用的是HTTPS ,但是搭建私有镜像默认使用的是HTTP服务,所以与私有镜像交换时出现以下错误
[root@promote ~]# docker login -uadmin -pHarbor12345 http://192.168.170.132
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get https://192.168.170.132/v2/: dial tcp 192.168.170.132:443: connect: connection refused
  • 解决方法
[root@promote ~]# vim /usr/lib/systemd/system/docker.service
14 ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.170.132 --containerd=/run/containerd/containerd.sock
//在中间添加 --insecure-registry 192.168.170.132
[root@promote ~]# systemctl daemon-reload 
[root@promote ~]# systemctl restart docker    //重启服务
[root@promote ~]# docker login -uadmin -pHarbor12345 http://192.168.170.132
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@promote ~]# docker tag cirros:latest 192.168.170.132/xiangmu/cirros:v2
[root@promote ~]# docker push 192.168.170.132/xiangmu/cirros:v2 
The push refers to repository [192.168.170.132/xiangmu/cirros]
858d98ac4893: Layer already exists 
aa107a407592: Layer already exists 
b993cfcfd8fd: Layer already exists 
v2: digest: sha256:c7d58d6d463247a2540b8c10ff012c34fd443426462e891b13119a9c66dfd28a size: 943
//上传成功
  • 进入仓库查看
    Docker私有仓库Harbor理论与部署_第8张图片
  • 有时候会有延迟,可以重新登录查看
  • 这样镜像上传私有仓库的操作便完成,想要下载镜像,也可以复制pull命令进行下载

四、维护Harbor

  • 可以使用docker-compose 来管理Harbor 。相关命令必须在与docker-compose.yml相同的目录中运行

1.修改Harbor.cfg配置文件

  • 要更改Harbor的配置文件时,需要先停止现有的Harbr实例并更新Harbor.cfg;然后运行prepare脚本来填充配置,最后重新创建并启动Harbor的实例
[root@promote harbor]# pwd 
/usr/local/harbor
[root@promote harbor]# docker-compose down -v   //停止实例
Stopping harbor-jobservice  ... done
Stopping nginx              ... done
Stopping harbor-ui          ... done
Stopping harbor-db          ... done
Stopping registry           ... done
Stopping harbor-adminserver ... done
Stopping harbor-log         ... done
Removing harbor-jobservice  ... done
Removing nginx              ... done
Removing harbor-ui          ... done
Removing harbor-db          ... done
Removing registry           ... done
Removing harbor-adminserver ... done
Removing harbor-log         ... done
Removing network harbor_harbor
  • 使用 docker-compose down -v 命令时同时会保留镜像数据/数据库
  • 停止完毕后,按照自己的需求对harbor.cfg配置文件进行配置,配置完毕后执行./prepare脚本生效
[root@promote harbor]# ./prepare 
Clearing the configuration file: ./common/config/adminserver/env
Clearing the configuration file: ./common/config/ui/env
Clearing the configuration file: ./common/config/ui/app.conf
Clearing the configuration file: ./common/config/ui/private_key.pem
Clearing the configuration file: ./common/config/db/env
Clearing the configuration file: ./common/config/jobservice/env
Clearing the configuration file: ./common/config/jobservice/app.conf
Clearing the configuration file: ./common/config/registry/config.yml
Clearing the configuration file: ./common/config/registry/root.crt
Clearing the configuration file: ./common/config/nginx/nginx.conf
loaded secret from file: /data/secretkey
Generated configuration file: ./common/config/nginx/nginx.conf
Generated configuration file: ./common/config/adminserver/env
Generated configuration file: ./common/config/ui/env
Generated configuration file: ./common/config/registry/config.yml
Generated configuration file: ./common/config/db/env
Generated configuration file: ./common/config/jobservice/env
Generated configuration file: ./common/config/jobservice/app.conf
Generated configuration file: ./common/config/ui/app.conf
Generated certificate, key file: ./common/config/ui/private_key.pem, cert file: ./common/config/registry/root.crt
The configuration files are ready, please use docker-compose to start the service.
  • 接着进行启动
[root@promote harbor]# docker-compose up -d
Creating network "harbor_harbor" with the default driver
Creating harbor-log ... done
Creating harbor-db          ... done
Creating registry           ... done
Creating harbor-adminserver ... done
Creating harbor-ui          ... done
Creating nginx              ... done
Creating harbor-jobservice  ... done
  • 注意:如果这里在启动的时候出现下面的报错
[root@promote harbor]# docker-compose up -d
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-885bf3146a17 -j RETURN: iptables: No chain/target/match by that name.
 (exit status 1))
  • 是防火墙的原因,如果重启防火墙的话,需要重启docker服务
[root@promote harbor]# systemctl restart docker

2.新建用户管理

  • 在web界面上创建一个用户
    Docker私有仓库Harbor理论与部署_第9张图片
    Docker私有仓库Harbor理论与部署_第10张图片
    Docker私有仓库Harbor理论与部署_第11张图片
  • 将新建的用户加入到项目当中
    Docker私有仓库Harbor理论与部署_第12张图片
    Docker私有仓库Harbor理论与部署_第13张图片
  • 在客户端上使用新用户远程登录harbor并进行镜像的下载与上传
[root@promote docker]# docker logout http://192.168.170.132
Removing login credentials for 192.168.170.132
[root@promote docker]# docker login http://192.168.170.132
Username: chanze
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@promote docker]# docker images   //此时没有镜像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
[root@promote docker]# docker pull 192.168.170.132/xiangmu/cirros:v1
v1: Pulling from xiangmu/cirros
f513001ba4ab: Pull complete 
8da581cc9286: Pull complete 
856628d95d17: Pull complete 
Digest: sha256:c7d58d6d463247a2540b8c10ff012c34fd443426462e891b13119a9c66dfd28a
Status: Downloaded newer image for 192.168.170.132/xiangmu/cirros:v1
192.168.170.132/xiangmu/cirros:v1   //下载完成
[root@promote docker]# docker images
REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE
192.168.170.132/xiangmu/cirros   v1                  3c82e4d066cf        6 weeks ago         12.6MB
  • 持久化数据
  • 如需重新部署,需要移除Harbor服务器容器全部数据

//持久数据,如镜像,数据库等在宿主机的/data/目录下,日志在宿主机的/var/log/Harbor目录下;需要停止服务

docker-compose down -v
rm -rf /data/database
rm -rf /data/registry
[root@promote harbor]# cd /var/log/harbor/		//harbor相关日志
[root@harbor harbor]# ls
2020-04-23  2020-04-24
[root@promote harbor]# cd /data/	    //持久化数据,如镜像、数据库等在harbor的/data目录下
[root@promote data]# ls
ca_download  config  database  job_logs  psc  registry  secretkey

//如果删除持久化数据,需要先关闭容器
[root@promote data]# cd /usr/local/harbor
[root@promote data]# docker-compose down -v
[root@promote data]# rm -rf /data/database/ /data/registry/

你可能感兴趣的:(docker)