关于 Docker 容器获取真实 IP

1次阅读

共计 1099 个字符,预计需要花费 3 分钟才能阅读完成。

使用 portainerstack部署容器的时候应该如何返回真实 IP?

version: '3'
services:
  webdav:
    image: ghcr.io/hacdias/webdav
    container_name: webdav
    restart: always
    ports:
      - "10001:6065"
    volumes:
      - /storage/docker_data/webdav/config.yml:/config.yml:ro
      - /storage/docker_data/webdav/data:/data
    command: -c /config.yml
  • 使用 stack docker compose 部署容器的时候,docker 会自动生成一个以 stack 命名的网桥, 比如这个 stack 名叫 webdav
  • 比如刚刚生成的容器就自己创建了一个自己的网桥,容器的 IP 地址是 172.19.0.2, 网关是 172.19.0.1

Bridge:

Name Stack LT Driver Attachable IPAM Driver IPV4 IPAM Subnet IPV4 IPAM Gateway
webdav_default webdav bridge false default 172.19.0.0/16 172.19.0.1
location / {
  proxy_pass http://127.0.0.1:10001;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header REMOTE-HOST $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Host $host;
  proxy_redirect off;
}
  • 用 nginx 进行反向代理的时候,我进入容器的后台发现

    2024-10-18T03:01:09.536Z	INFO	login attempt	{"username": "aaaa", "remote_address": "172.19.0.1:57548"}
    2024-10-18T03:01:09.536Z	INFO	user authorized	{"username": "aaaa"}
    2024-10-18T03:02:13.219Z	INFO	login attempt	{"username": "aaaa", "remote_address": "172.19.0.1:56084"}
    
  • 容器只能检测到它网关的信息,有老哥知道如何解决? 无法获得真正的 IP 地址
  • 不仅仅是 webdav 其他的容器都是这样, 类似的还有 bitwarden 等等。。
正文完
 0