如何将端口限制为docker-machine创建的主机?

时间:2015-09-25 02:00:42

标签: docker docker-machine

我想创建一个只接受来自某些IP的5432连接的数据库机器。我想允许连接到此数据库计算机的其他计算机未运行docker。我使用此docker-compose文件在数字海洋上使用docker-machine部署了一个主机:

postgres:
  restart: always
  image: postgres:latest
  volumes:
    - /tmp/postgrescont:/tmp
  volumes_from:
    - data
  env_file: .dbenv
  ports:
    - "5432:5432"

data:
  restart: always
  image: postgres:latest
  volumes:
    - /var/lib/postgresql
  command: "true"

并尝试仅允许来自其他特定主机的流量:

$ iptables -A INPUT -p tcp --dport 5432 -s <ip address of certain other host> -j ACCEPT
$ iptables -A INPUT -p tcp --dport 5432 -j DROP # deny other traffic

但是,出于某种原因,我仍然可以从不需要的主机连接。知道为什么它不起作用吗?

2 个答案:

答案 0 :(得分:2)

这就是我能够将端口5432限制为某个IP的方式:

iptables -I DOCKER 1 -p tcp ! -s <other_host_ip_allowed> --dport 5432 -j DROP

我将规则插入DOCKER链的第一条规则,并删除任何其他不是我指定的IP。

答案 1 :(得分:0)

这正是Docker所推荐的。

  

Docker的转发规则默认允许所有外部源IP。要仅允许特定IP或网络访问容器,请在DOCKER过滤器链的顶部插入否定规则。例如,要限制外部访问以便只有源IP 8.8.8.8可以访问容器,可以添加以下规则:

     

$ iptables -I DOCKER -i ext_if! -s 8.8.8.8 -j DROP

Docker Networking