使容器只能从本地主机访问
Make container accessible only from localhost
我在 Debian Jessie 上安装了 Docker 引擎,我正在 运行 那里安装带有 nginx 的容器。我的 "run" 命令如下所示:
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 容器只能从本地主机访问。
嗯,解决方法很简单,你只需要在映射端口时指定127.0.0.1
:
docker run -p 127.0.0.1:1234:80 -d -v /var/www/:/usr/share/nginx/html nginx:1.9
中指定所需的主机 IP
docker run -p 127.0.0.1:1234:80 -d -v /var/www/:/usr/share/nginx/html nginx:1.9
如果您正在做反向代理,您可能希望将它们与您的反向代理一起放在用户定义的网络上,然后所有内容都在一个容器中并且可以在其内部网络上访问。
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
我在 Debian Jessie 上安装了 Docker 引擎,我正在 运行 那里安装带有 nginx 的容器。我的 "run" 命令如下所示:
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 容器只能从本地主机访问。
嗯,解决方法很简单,你只需要在映射端口时指定127.0.0.1
:
docker run -p 127.0.0.1:1234:80 -d -v /var/www/:/usr/share/nginx/html nginx:1.9
docker run -p 127.0.0.1:1234:80 -d -v /var/www/:/usr/share/nginx/html nginx:1.9
如果您正在做反向代理,您可能希望将它们与您的反向代理一起放在用户定义的网络上,然后所有内容都在一个容器中并且可以在其内部网络上访问。
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