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

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

port mapping

中指定所需的主机 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