使容器只能从本地主机访问

我在Debian Jessie上安装了Docker引擎,我在那里运行带有nginx的容器。 我的“运行”命令如下所示:

docker run -p 1234:80 -d -v /var/www/:/usr/share/nginx/html nginx:1.9 

它工作正常,问题是,现在这个容器的内容可以通过http://{server_ip}:1234 。 我想在这个服务器上运行多个容器(域),所以我想为它们设置反向代理。

我怎样才能确保容器将只能通过反向代理访问,而不是直接从IP:port ? 例如。:

 http://{server_ip}:1234 # not found, connection refused, etc... http://localhost:1234 # works fine 

/ /编辑:只是要清楚 – 我不问如何设置反向代理,但如何运行的Docker容器只能从本地访问。

在端口映射中指定所需的主机IP

 docker run -p 127.0.0.1:1234:80 -d -v /var/www/:/usr/share/nginx/html nginx:1.9 

如果您正在执行反向代理,则可能需要将它们全部放在用户定义的networking上,并将其与反向代理一起放在一个容器中,然后在内部networking上访问。

 docker network create net docker run -d --net=web -v /var/www/:/usr/share/nginx/html nginx:1.9 docker run -d -p 80:80 --net=web haproxy 

那么解决scheme非常简单,你只需要在映射端口时指定127.0.0.1

 docker run -p 127.0.0.1:1234:80 -d -v /var/www/:/usr/share/nginx/html nginx:1.9