Docker:在容器中获取客户端IP地址

时间:2020-07-01 07:07:20

标签: docker docker-compose docker-container docker-networking

我如何在任何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容器?

谢谢

1 个答案:

答案 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'];