按照官方文档(https://docs.docker.com/registry/spec/api/#deleting-an-image),我已经能够成功删除图像。正如预期的那样,删除后,图像无法再被拉取,也无法通过 API 调用其清单。
我觉得我已经完成了最困难的部分,但问题是/v2/_catalog
删除完成后,存储库仍然列在下面。我正在尝试完全清除注册表。
这是我的注册表撰写文件:
registry:
image: registry:2.5.2
container_name: registry-test
ports:
- 5007:5000
environment:
REGISTRY_STORAGE: s3
REGISTRY_HTTP_TLS_CERTIFICATE: /etc/cert.crt
REGISTRY_HTTP_TLS_KEY: /etc/cert.key
REGISTRY_STORAGE_S3_ACCESSKEY: ******
REGISTRY_STORAGE_S3_SECRETKEY: ******
REGISTRY_STORAGE_S3_REGION: us-west-1
REGISTRY_STORAGE_S3_BUCKET: ******
REGISTRY_STORAGE_S3_SECURE: "true"
REGISTRY_STORAGE_DELETE_ENABLED: "true"
volumes:
- /dockerdata/volumes/registry-test/etc/cert.crt:/etc/cert.crt
- /dockerdata/volumes/registry-test/etc/cert.key:/etc/cert.key
restart: unless-stopped
Run Code Online (Sandbox Code Playgroud)
这是我删除图像的高级方法:
收集图像摘要:
HEAD https://myprivateregistry:5001/v2/myimage/manifests/mytag
添加"Accept: application/vnd.docker.distribution.manifest.v2+json"
到调用的标题中
该调用返回标头键Docker-Content-Digest
,其值例如sha256:b57z31xyz0f616e65f106b424f4ef29185fbd80833255d79dabc73b8eb873bd
使用步骤 2 中的值运行删除调用:DELETE https://myprivateregistry:5001/v2/myimage/manifests/sha256:b57z31xyz0f616e65f106b424f4ef29185fbd80833255d79dabc73b8eb873bd
注册表API返回202 Accepted
手动运行垃圾收集:registry garbage-collect /etc/docker/registry/config.yml
垃圾收集器从磁盘中删除关联的 blob(此处省略日志,但它成功删除了 blob)
此时,我可以确认 blob 已从磁盘中完全删除,并且我无法再调用图像详细信息(如上面的步骤 1 所示),所以我认为我已经完成了。
但是,运行时:/v2/_catalog …
我目前有一个 WORKING SFTP 登录,使用私钥进行登录,并且用户被 chroot 到他们的主目录。
目标:保留用户 chroot 但允许 WRITE 访问相对 chroot 目录,而无需在任何地方指定任何路径或 cd。
换句话说,当 sftp 用户登录时,我不希望他们必须 cd 到另一个路径才能上传文件。
由于 chroot 目录需要完全的 root 所有权(由于 chroot 设计),我不确定这是否可能。
在 /etc/passwd 中:
sftpuser:x:1006:1006:,,,:/home/sftpuser:/bin/false
用户登录公钥位于:
/home/sftpuser/.ssh/authorized_keys
sshd_confg 中的 Chroot 规则:
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
AllowTCPForwarding no
X11Forwarding no
Run Code Online (Sandbox Code Playgroud)
主目录权限:
# ls -l /home/ |grep sftpuser
drwxr-xr-x 5 root root 4096 May 4 11:24 sftpuser
# ls -l /home/sftpuser/
total 4
drwxrw-r-x 3 sftpuser sftpuser 4096 May 4 11:23 sftp_share
Run Code Online (Sandbox Code Playgroud)
当前工作流程示例: …
使用nginx限速,以这条规则为例:
limit_req_zone $request_limiting_zone_key zone=request_limiting_search:20m rate=30r/m;
这将设置每分钟 30 个请求。但是,如果我想堆叠第二条规则,那么逻辑是“每分钟 30 个请求,或每秒 1 个请求。以先到者为准”
原因是我们仍然希望上限为 30/分钟,但有一些奇怪的尝试,我们在 1-2 秒内看到了 10 次请求的垃圾邮件。当请求通过得那么快时,这会导致一些问题。因此,我们希望将用户限制为每秒 1 个请求,并且每分钟上限为 30 个。
我阅读了文档参考,但没有看到太多有关堆叠不同费率规则的信息。
这可能吗?如果是这样,语法是什么?
如果这个问题已经得到解答,我感到非常抱歉。我找到了这篇文章:DHCP 保留但是我不确定这是否与 Windows 或 Linux DHCP 服务器相关,并且我想在进行任何更改之前清楚地说明我的配置以获得准确的是/否。
我有一个 Windows DHCP 服务器,配置如下:
我的目标是将地址池限制为 10.10.5.240 - 10.10.5.254,因为非保留 DHCP 客户端在此子网上非常罕见。
但是,我已经根据整个 /24 子网中的MAC 地址配置了许多地址保留,并且它们不会受到影响。
调整地址池会影响我的预订吗?
我看到之前有人问过这个类似的问题,但是要么没有回答,要么 100% 与 Windows 解决方法有关。
这特别是 Linux,我正在尝试将 Clonezilla 映像还原到 4TB 硬盘驱动器。
我之前在其他磁盘上多次使用过这个映像,但是由于这个较大驱动器的 MBR 限制,它需要是 GPT,所以我无法恢复磁盘映像。
Clonezilla 指出的确切错误是“错误:目标磁盘大小为 4.00TB,大于 MBR 分区表条目最大 2TiB。您必须使用 GUID 分区表格式 (GPT)”
我明白问题是“什么”,但我不知道解决的步骤。我将尝试使用Macrium反射和恢复克隆主机,希望它可以自动迁移分区结构。
注意:此驱动器是空白的,因此我不担心数据丢失。实验很好,因为我在驱动器上没有什么可失去的。
编辑/更新:
所以看起来 Clonezilla 实际上允许该过程继续,但是它会将所有内容按原样写入 MBR,并且磁盘将被视为 2TB。
有了这个,问题就变成了将操作系统/启动卷上的 MBR 转换为 GPT(是的,我正在启动到我正在使用的系统,数据丢失不是问题,因为我可以从图像中恢复,如果有的话休息,到目前为止在我的试验中有很多次)
我已经用 gdisk 打开了磁盘并运行了到 GPT 的转换。这是成功的,但是这会杀死 GRUB 引导分区,并且确实系统在转换后无法引导。
我正在关注这个:https : //wiki.archlinux.org/index.php/GUID_Partition_Table#Convert_from_MBR_to_GPT
我现在需要什么帮助: 所以现在我似乎已经将我的 Clonezilla 映像以 MBR 格式恢复到新磁盘,并且已经使用 gdisk 完成并就地转换为 GPT。
我现在正在寻找有关创建 GRUB 分区和重新安装 GRUB 以便系统可以在转换后启动的指导。
一旦我把这一切都布置好了,我就可以将它格式化为一个完整的逐步答案,将所有组件放在一起,以帮助将来的其他人。
谢谢!!
所以我有两个站点在运行,每个站点都在一个 Amazon ELB 后面。
出于这篇文章的目的(以及我公司的隐私),每个主机名都使用这些主机名:
两者都安装了证书。两个证书都是可信的(从 CA 购买)。
它们通过浏览器/等完美运行,并且在请求站点时使用正确的证书(ELB 的预期行为)。已通过各种浏览器和请求确认在访问每个站点时正在加载和验证适当的证书。
但是,在尝试使用 Nagios 监控证书到期时,我发现了一个奇怪的问题。
证书监控有效,但仅适用于 ELB 中的默认证书,无论正在访问哪个主机。
这是命令定义,标准设置:
define command{
command_name check_cert_expire
command_line $USER1$/check_http -S -H $HOSTADDRESS$ -C $ARG1$
}
Run Code Online (Sandbox Code Playgroud)
然后在主机/服务定义中:
define host{
host_name example.com
use docker-container
display_name Example Site 1
check_command check_https_page!/
}
define host{
host_name anotherexample.com
use docker-container
display_name Example Site 2
check_command check_https_page!/
}
define service{
host_name example.com
use generic-service
service_description Cert Expiry Site1
check_command check_cert_expire!45
}
define service{
host_name anotherexample.com
use generic-service
service_description …
Run Code Online (Sandbox Code Playgroud) monitoring load-balancing nagios amazon-web-services amazon-elb
amazon-elb ×1
chroot ×1
clonezilla ×1
dhcp-server ×1
docker ×1
linux ×1
monitoring ×1
nagios ×1
networking ×1
nginx ×1
sftp ×1
ssh ×1
ubuntu-14.04 ×1