如何阻止Dockerregistry?

我想阻止对默认docker.ioregistry的访问。 为了安全/ IP保护,我们需要阻止对公共Docker集线器的推入/拉出访问。

已经有很多尝试使这个configuration选项,但所有PR只是不断被拒绝。 红帽已经实现了'–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中search/提取。

解决这个问题的PR之一被一位维护人员closures了,他说这看起来像是防火墙应该解决的问题。 有人可以告诉我这可以怎么做吗?

在红帽/ centos添加

 --block-registry docker.io 

无论你从哪里启动docker引擎(可能是/etc/sysconfig/docker /lib/systemd/system/docker.service在redhat上,或者可能是/lib/systemd/system/docker.service

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

现在如果你做了ps auxwwf | grep docker ps auxwwf | grep docker docker docker engine –block-register标志应该出现在进程列表中。

我来到这里,因为这不适用于Debian / Ubuntu的,我正在寻找一种方式在debian上做到这一点。 = / HTH