使用-p 参数指定容器的端口绑定到宿主机之后,docker会直接开放这个端口的外网访问,怎么屏蔽这种特性


使用 docker run -d --name=nginx_test002 -p 8011:80 nginx 启动一个容器之后,docker会直接将宿主机的8011端口直接暴露到外网,就算我在 添加 iptables -I INPUT -p tcp -m tcp --dport 8011 -j DROP 规则也没有办法屏蔽外网对这个端口的访问,有什么办法可以避免这种情况吗?这个端口,我只想让内网的其他机器访问。
已邀请:

yingz - 80后it男。。。

赞同来自: 徐磊


-p 可以指定ip的,请参考(https://docs.docker.com/engine ... expose)

下面的命令可能是你需要的:
<pre>
docker run -d --name=nginx_test002 -p <private-ip>:8011:80 nginx
</pre>
另外还可以指定多个 -p,也就可以暴露多个端口或绑定到多个ip上。

refactoring - 啥都做的技术管理者

赞同来自:


除了楼上@yingz 的限定IP的方式,其实还有两种方法也可以到达限制访问的目的.

<ol><li><strong>--link</strong> </li></ol>将容器使用--link做链接,这样被链接的容器可以直接访问。不过小麻烦是:多个容器链接需要多个--link,并且只能链接已创建的.
<ol><li><strong>docker overlay network</strong></li></ol>docker v1.9新增一联网方式. 使用docker network可以创建单机若干容器的私有网络(随意加入,退出),配合其他技术可以实现跨主机联网.

<pre>
docker network create 网络名称
docker run --net=网络名称 mysql
docker run --net=网络名称 tomcat

docker network disconnect 网络名称 tomcat
docker network connect 网络名称 tomcat
</pre>

王传义

赞同来自:


我现在想暴力本地端口呢!我们机器是内网 不是公网ip 如何解决?

要回复问题请先登录注册