我如何在任何Docker容器中接收客户端的IP地址?
在我的PHP应用程序中,我需要使用$ _SERVER [REMOTE_ADDR]检查客户端ip地址,以控制当前无法访问的访问。
例如,我正在端口8080的容器中运行php-apache网络服务器。
我的IP地址是:192.168.80.177 集装箱网络:172.21.0.0/16 容器ip':172.21.0.3
当我访问localhost:8080时,将记录docker网络网关的ip(172.21.0.1)。
是否可以将我的客户端IP地址传递给docker容器?
谢谢
答案 0 :(得分:0)
您可以在docker运行时将主机ip作为环境变量传递,然后使用$_ENV['your_env_name']
在php中获取它。
# GET & SET HOST IP
# double check this on the system you're working on.
# should work on most linux env
# Adjust NR=1 or NR=2 NR=3 depending on the ip addresses returned
export HOST_IP=$(echo "$(ifconfig)" | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | awk "NR==7{print;exit}");
# PASS HOST IP AS ENV
docker run -it -d -p 8080:8080 -e HOST_IP=$HOST_IP --name yourname docker:image;
// Your php script
echo $_ENV['HOST_IP'];