使容器只能从本地主机访问
我在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