docker - 如何阻止 Docker 注册表?

标签 docker registry docker-registry

我想阻止对默认 docker.io 注册表的访问。为了安全/IP 保护,我们需要阻止对公共(public) Docker 集线器的推/拉访问。

已有许多尝试将此作为配置选项,但所有 PR 都不断被拒绝。 Red Hat 已经实现了“--block-registry”和“--add-registry”,它们是。正是 我需要什么,但它只适用于 Red Hat 的 docker 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

有了所有这些,我仍然可以从 docker.io 搜索/拉取。

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

最佳答案

将此添加到 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

关于docker - 如何阻止 Docker 注册表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41578045/

相关文章:

powershell - 如何从 Powershell 调用 DOSkey 别名?

docker - 如何将默认的 docker 注册表从 docker.io 更改为我的私有(private)注册表?

Docker Compose 构建不工作

node.js - Dockerizing 一个 React App : The app starts inside the container, 但它不能从暴露的端口访问

c# - Windows - 将程序用作虚拟打印机?

windows - 在 Windows 注册表上注册程序,使其出现在控制面板的 "Uninstall a program"上

docker - 如何在拥有私有(private) docker 注册表服务器的同时将 docker 与 gradle 一起使用

Docker 说 "...: Already exists"即使镜像已被事先删除

mysql - Docker 容器 - MYSQL_RANDOM_ROOT_PASSWORD 未在 STDOUT 中显示输出

postgresql - docker-compose up 与 docker-compose run,为什么后者似乎没有启动服务?