zl程序教程

您现在的位置是:首页 >  后端

当前栏目

registry仓库通过api调用方式进行垃圾回收,garbage-collect

API 方式 进行 通过 调用 仓库 垃圾 回收
2023-09-11 14:18:28 时间

registry仓库的API默认是不提供垃圾回收API的,原因是在回收过程中,注册表是只读的,此时也不能进行push操作,所以就目前registry的设计来说,无法提供API进行实时的垃圾回收操作,那有什么办法可以通过API调用来进行垃圾回收呢?

这里给一个最简单的方法,通过docker api的exec操作。访问代码我贴在下面了,自己试吧,不想做过多的赘述,都是基本操作~

首先开放docker的api方式调用:

[root@docker2 ~]# vi /usr/lib/systemd/system/docker.service
# 如果是ubuntu用户, vi /lib/systemd/system/docker.service

#找到ExecStart并添加 -H tcp://0.0.0.0:4312 如下,端口4312可以自己定哈~不是固定的

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock  -H tcp://0.0.0.0:4312

#退出保存

[root@docker2 ~]# systemctl daemon-reload

[root@docker2 ~]# systemctl restart docker

[root@docker2 ~]# netstat -antp | grep 4312
tcp6       0      0 :::4312                 :::*                    LISTEN      4764/dockerd        


这里docker请求的4312端口是我自己定的。

192.168.24.129:4312/containers/{id}/exec

{
  "AttachStdin": false,
  "AttachStdout": true,
  "AttachStderr": true,
  "Tty": false,
  "Privileged": true,
  "Cmd": [
    "registry",
    "garbage-collect",
    "--dry-run",
    "/etc/docker/registry/config.yml"
  ],
  "WorkingDir": "/"
}





192.168.24.129:4312/exec/{id}/start
{
"Detach": false,
"Tty": false
}

在这里插入图片描述
在这里插入图片描述
参考官方文档网址:https://docs.docker.com/engine/api/v1.41/#tag/Exec