harbor资源管理垃圾回收

1 . Harbor常用api接口应用

[root@confluence_jira ~]# curl -u "admin:Harbor12345" -X GET -H "Content-Type: application/json" "172.24.101.37:8885/api/projects?project_name=library"
[
  {
    "project_id": 2,
    "owner_id": 1,
    "name": "public_opinion",
    "creation_time": "2019-01-16T06:37:40Z",
    "update_time": "2019-01-16T06:37:40Z",
    "deleted": false,
    "owner_name": "",
    "togglable": true,
    "current_user_role_id": 1,
    "repo_count": 1,
    "chart_count": 0,
    "metadata": {
      "public": "false"
    }
  },
  {
    "project_id": 1,
    "owner_id": 1,
    "name": "library",
    "creation_time": "2019-01-16T06:33:52.831689Z",
    "update_time": "2019-01-16T06:33:52.831689Z",
    "deleted": false,
    "owner_name": "",
    "togglable": true,
    "current_user_role_id": 1,
    "repo_count": 1,
    "chart_count": 0,
    "metadata": {
      "public": "true"
    }
  }
[root@harbor ~]# curl -u "admin:Harbor12345" -X GET -H "Content-Type: application/json" "http://192.168.138.130/api/projects/1"
{
  "project_id": 1,
  "owner_id": 1,
  "name": "library",
  "creation_time": "2019-01-25T12:04:20.829437Z",
  "update_time": "2019-01-25T12:04:20.829437Z",
  "deleted": false,
  "owner_name": "",
  "togglable": true,
  "current_user_role_id": 1,
  "repo_count": 1,
  "chart_count": 0,
  "metadata": {
    "public": "true"
  }
[root@harbor ~]# curl  -u "admin:Harbor12345"  -X GET -H "Content-Type: application/json" "http://192.168.138.130/api/search?q=centos"
{
  "project": [],
  "repository": [
    {
      "project_id": 1,
      "project_name": "library",
      "project_public": true,
      "pull_count": 0,
      "repository_name": "library/centos",
      "tags_count": 1
    }
  ],
  "Chart": null
}

[root@harbor ~]# curl -u "admin:Harbor12345" -X GET -H "Content-Type: application/json" "http://192.168.138.130/api/projects/"
[
  {
    "project_id": 2,
    "owner_id": 1,
    "name": "public_opinion",
    "creation_time": "2019-01-25T14:17:14Z",
    "update_time": "2019-01-25T14:17:14Z",
    "deleted": false,
    "owner_name": "",
    "togglable": true,
    "current_user_role_id": 1,
    "repo_count": 0,
    "chart_count": 0,
    "metadata": {
      "public": "true"
    }
  },
  {
    "project_id": 1,
    "owner_id": 1,
    "name": "library",
    "creation_time": "2019-01-25T12:04:20.829437Z",
    "update_time": "2019-01-25T12:04:20.829437Z",
    "deleted": false,
    "owner_name": "",
    "togglable": true,
    "current_user_role_id": 1,
    "repo_count": 1,
    "chart_count": 0,
    "metadata": {
      "public": "true"
    }
  }
[root@harbor ~]# curl -u "admin:Harbor12345" -X POST -H "Content-Type: application/json" "http://192.168.138.130/api/projects" -d @createproject.json
[root@harbor ~]# cat createproject.json 
{

  "project_name": "testrpo",

  "public": 0

}
curl -u "admin:Harbor12345" -X POST -H "Content-Type: application/json" "http://192.168.138.130/api/projects/{project_id}/logs/filter" -d @log.json
[root@harbor ~]# cat log.json 
{

  "username": "admin"

}
curl -u "admin:Harbor12345" -X GET -H "Content-Type: application/json" "http://192.168.138.130/api/users" 获取用户信息
[root@harbor ~]# curl -u "admin:Harbor12345" -X GET -H "Content-Type: application/json" "http://192.168.138.130/api/users/current"
{
  "user_id": 1,
  "username": "admin",
  "email": "[email protected]",
  "password": "",
  "realname": "system admin",
  "comment": "admin user",
  "deleted": false,
  "role_name": "",
  "role_id": 0,
  "has_admin_role": true,
  "reset_uuid": "",
  "creation_time": "2019-01-25T12:04:20.829437Z",
  "update_time": "2019-01-25T12:04:21.466614Z"
[root@harbor ~]# curl -u "admin:Harbor12345" -X POST -H "Content-Type: application/json" "http://192.168.138.130/api/users" -d @user.json
[root@harbor ~]# cat user.json 
{

  "user_id": 5,

  "username": "xinju",

  "email": "[email protected]",

  "password": "Xinju12345",

  "realname": "xinju",

  "role_id": 2

}

[root@harbor ~]# curl -u "admin:Harbor12345" -X GET -H "Content-Type: application/json" "http://192.168.138.130/api/users"
[
  {
    "user_id": 3,
    "username": "xinju",
    "email": "[email protected]",
    "password": "8c9bd99bc87dbfc5168e316c770c032d",
    "realname": "xinju",
    "comment": "",
    "deleted": false,
    "role_name": "",
    "role_id": 0,
    "has_admin_role": false,
    "reset_uuid": "",
    "creation_time": "2019-01-25T14:30:06Z",
    "update_time": "2019-01-25T14:30:06Z"
  }

[root@harbor ~]# curl -u "admin:Harbor12345" -X DELETE  -H "Content-Type: application/json" "http://192.168.138.130/api/users/3"
[root@harbor ~]# curl-u "admin:Harbor12345" -X GET -H "Content-Type: application/json" "http://192.168.138.130/api/repositories?project_id=1&q=centos"
[
  {
    "id": 1,
    "name": "library/centos",
    "project_id": 1,
    "description": "",
    "pull_count": 0,
    "star_count": 0,
    "tags_count": 1,
    "labels": [],
    "creation_time": "2019-01-25T14:12:31.421446Z",
    "update_time": "2019-01-25T14:12:31.421446Z"
  }
[root@harbor ~]# curl -s -u "admin:Harbor12345" -X GET -H "Content-Type: application/json" "http://192.168.138.130/api/repositories/library%2Fcentos/tags/"
[
  {
    "digest": "sha256:20f32279b5e4801424c21f56c2f645fc2109d81bdc3cc6855e7e982b5d3d334b",
    "name": "7.2.1511",
    "size": 71563149,
    "architecture": "amd64",
    "os": "linux",
    "docker_version": "17.06.2-ce",
    "author": "The CentOS Project \[email protected]\u003e",
    "created": "2018-10-09T18:21:43.342796088Z",
    "config": {
      "labels": {
        "license": "GPLv2",
        "name": "CentOS Base Image",
        "vendor": "CentOS"
      }
    },
    "signature": null,
    "labels": []
  }

2 .harbor 删除镜像

[root@harbor ~]# curl -u "admin:Harbor12345" -X DELETE -H "Content-Type: application/json" http://192.168.138.130/api/repositories/library%2Fcentos/tags/7.2.1511

#解释 library是项目名,centos是镜像名称,7.2.1511是镜像标签

3 harbor垃圾回收

   a、首先,删除Harbor的UI中的存储库。这是软删除。您可以删除整个存储库或仅删除它的标签。软删除后,Harbour中不再管理存储库,但是存储库的文件仍然保留在Harbour的存储中。 

[root@harbor ~]# curl -u "admin:Harbor12345" -X DELETE -H "Content-Type: application/json" http://192.168.138.130/api/repositories/library%2Fcentos/tags/7.2.1511

   b、接下来,使用注册表的垃圾回收(GC)删除存储库的实际文件。在执行GC之前,确保没有人推送图像或Harbour根本没有运行。如果有人在GC运行时推送镜像,则存在镜像层被错误删除的风险,从而导致镜像损坏。所以在运行GC之前,首选的方法是先停止Harbour。

[root@harbor harbor]# docker-compose stop
Stopping nginx              ... done
Stopping harbor-jobservice  ... done
Stopping harbor-portal      ... done
Stopping harbor-core        ... done
Stopping harbor-adminserver ... done
Stopping registryctl        ... done
Stopping redis              ... done
Stopping harbor-db          ... done
Stopping registry           ... done
Stopping harbor-log         ... done

  c、在部署Harbour的主机上运行以下命令以预览会影响哪些文件/镜像 

       注:上述选项”–dry-run”将打印进度而不删除任何数据。

[root@harbor ~]# docker run -it --name gc --rm --volumes-from registry vmware/registry-photon:v2.6.2-v1.5.0 garbage-collect --dry-run /etc/registry/config.yml
Unable to find image 'vmware/registry-photon:v2.6.2-v1.5.0' locally
v2.6.2-v1.5.0: Pulling from vmware/registry-photon
97b915ad4ee1: Pull complete 
7403d4fcc953: Pull complete 
d79f0623a023: Pull complete 
03fe7d8c1fcc: Pull complete 
692f0a17470a: Pull complete 
7c85caeabf8f: Pull complete 
ef3310fc291c: Pull complete 
Digest: sha256:3ee1c992200a069d8d943aa21f555950bd7d1764122a936ba2a3cb115885bf86
Status: Downloaded newer image for vmware/registry-photon:v2.6.2-v1.5.0
library/centos

0 blobs marked, 3 blobs eligible for deletion
blob eligible for deletion: sha256:20f32279b5e4801424c21f56c2f645fc2109d81bdc3cc6855e7e982b5d3d334b
blob eligible for deletion: sha256:4cbf48630b46d315687eb42e32ff93da0197f6a6e07c010c2eb180528da80e91
blob eligible for deletion: sha256:f2d1d709a1daed8f529e5f561d7e102c08cab4856f1ca44c36509c552d14e3fe
[root@harbor harbor]# du -sh /data/
128M    /data/

  d、以下命令执行垃圾回收

[root@harbor harbor]# docker run -it --name gc --rm --volumes-from registry vmware/registry-photon:v2.6.2-v1.5.0 garbage-collect /etc/registry/config.yml
library/centos

0 blobs marked, 3 blobs eligible for deletion
blob eligible for deletion: sha256:f2d1d709a1daed8f529e5f561d7e102c08cab4856f1ca44c36509c552d14e3fe
INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/f2/f2d1d709a1daed8f529e5f561d7e102c08cab4856f1ca44c36509c552d14e3fe  go.version=go1.7.3 instance.id=b3425a25-da41-4049-922b-1bb3151d7ee9 service=registry
blob eligible for deletion: sha256:20f32279b5e4801424c21f56c2f645fc2109d81bdc3cc6855e7e982b5d3d334b
INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/20/20f32279b5e4801424c21f56c2f645fc2109d81bdc3cc6855e7e982b5d3d334b  go.version=go1.7.3 instance.id=b3425a25-da41-4049-922b-1bb3151d7ee9 service=registry
blob eligible for deletion: sha256:4cbf48630b46d315687eb42e32ff93da0197f6a6e07c010c2eb180528da80e91
INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/4c/4cbf48630b46d315687eb42e32ff93da0197f6a6e07c010c2eb180528da80e91  go.version=go1.7.3 instance.id=b3425a25-da41-4049-922b-1bb3151d7ee9 service=registry

  e、重启harbor各组件镜像

[root@harbor harbor]# docker-compose start
Starting log         ... done
Starting postgresql  ... done
Starting redis       ... done
Starting adminserver ... done
Starting registry    ... done
Starting core        ... done
Starting jobservice  ... done
Starting portal      ... done
Starting proxy       ... done
Starting registryctl ... done
[root@harbor harbor]# du -sh /data/
59M    /data/

参考:https://www.cnblogs.com/xiyangxixi/p/10126106.html 通过api接口删除镜像

https://blog.csdn.net/kong2030/article/details/81331142 回收harbor存储资源

猜你喜欢

转载自www.cnblogs.com/Honeycomb/p/10320188.html