我厌倦了像这样创建新的 docker 容器:
docker run -d -p5050:443 --name=free-proxy -v proxy-config:/data -e telegrammessenger/proxy:latest
此命令成功创建了一个新容器。现在我想限制这个容器,只使用主机名而不是 IP 地址。 我试试这个命令:
docker run -d -ptest.com:5050:443 --name=fourth-proxy -v proxy-config:/data -e telegrammessenger/proxy:latest
但是我得到这个错误:
docker: Invalid ip address: test.com.
我只希望我的容器只使用主机名(而不是 IP 地址)。
注意: 我想从外部仅使用主机名访问我的容器。 如果客户端使用 IP 地址,则他们不能使用代理:
tg://proxy?server=4.2.2.4&port=5050 (not acceptable)
tg://proxy?server=test.com&port=5050 (acceptable)
最佳答案
Docker 在 L4 层发布端口,它不会查看可能包含主机名的 L7 数据。在 tcp/ip 端口上监听时,您唯一拥有的是端口号和网络接口(interface)(由 ip 地址表示)。
要按主机名过滤,您需要将此逻辑放在您的应用程序中,或者在您的应用程序前面设置一个代理来执行过滤。有几种反向代理可以执行此操作,包括 traefik、nginx 和 haproxy。
关于docker - 将主机名绑定(bind)到容器 docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50675164/