如何阻止 Docker 注册表?

How to block a Docker registry?

我想阻止对默认 docker.io 注册表的访问。为了 security/IP 保护,我们需要阻止 push/pull 访问 to/from public Docker 集线器。

已经多次 尝试将此设置为配置选项,但所有 PR 都不断被拒绝。 Red Hat 实现了“--block-registry”和“--add-registry”,正是我所需要的,但它只适用于 Red Hat 的 [=44] 分支=] v1.10,我想使用 docker v1.12+

我正在使用 RHEL/Centos 7

DNS 欺骗似乎无法通过 /etc/hosts 中的以下内容起作用(不再):

127.0.0.1 index.docker.io registry.docker.io registry-1.docker.io docker.io

而且我似乎无法让防火墙通过以下规则阻止访问(其中 IP 当前是来自 /etc/hosts 中列出的上述主机的 IP):

# firewall-cmd --direct --get-rules ipv4 filter OUTPUT                                                                           
0 -p tcp -m tcp --dport 5000 -j REJECT
0 -p tcp -m tcp --dport 443 -j REJECT
0 -p tcp -m tcp -d 52.207.178.113 -j DROP
0 -p tcp -m tcp -d 52.73.159.23 -j DROP
0 -p tcp -m tcp -d 54.85.12.131 -j DROP
0 -p tcp -m tcp -d 52.6.119.223 -j DROP
0 -p tcp -m tcp -d 52.0.53.94 -j DROP
0 -p tcp -m tcp -d 34.192.123.224 -j DROP
0 -m state --state ESTABLISHED,RELATED -j ACCEPT
1 -p tcp -m tcp --dport 80 -j ACCEPT
1 -p tcp -m tcp --dport 53 -j ACCEPT
1 -p udp --dport 53 -j ACCEPT
1 -p tcp -m tcp --dport 2376 -j ACCEPT
2 -j REJECT

# firewall-cmd --direct --get-rules ipv4 filter FORWARD
0 -p tcp -m tcp --dport 5000 -j REJECT
0 -p tcp -m tcp --dport 443 -j REJECT
0 -p tcp -m tcp -d 52.207.178.113 -j DROP
0 -p tcp -m tcp -d 52.73.159.23 -j DROP
0 -p tcp -m tcp -d 54.85.12.131 -j DROP
0 -p tcp -m tcp -d 52.6.119.223 -j DROP
0 -p tcp -m tcp -d 52.0.53.94 -j DROP
0 -p tcp -m tcp -d 34.192.123.224 -j DROP

有了所有这些,我仍然可以 search/pull 来自 docker.io。

其中一个解决此问题的 PR 已被维护者关闭,维护者说它看起来应该由防火墙解决。有人可以告诉我这实际上是怎么做到的吗?

在 redhat/centos 添加

--block-registry docker.io

到你启动 docker 引擎的任何地方(可能是 /etc/sysconfig/docker 在 redhat 上,或者可能是 /lib/systemd/system/docker.service

如果您编辑了服务文件 (systemctl daemon-reload),请不要忘记刷新 systemd 并在任何一种情况下重新启动 docker 引擎 (systemctl restart docker.service)

现在,如果您执行 ps auxwwf | grep docker,docker engine --block-register 标志应该出现在进程列表中。

我来这里是因为这在 debian/ubuntu 上不起作用,我正在寻找一种在 debian 上执行此操作的方法。 = / HTH

将此添加到 Ubuntu 上的 /etc/hosts 对我有用:

0.0.0.0 index.docker.io auth.docker.io registry-1.docker.io dseasb33srnrn.cloudfront.net production.cloudflare.docker.com

我从这里得到域列表:https://support.sonatype.com/hc/en-us/articles/115015442847-Whitelisting-Docker-Hub-Hosts-for-Firewalls-and-HTTP-Proxy-Servers