Docker

在 docker 容器中執行 Unifi Controller 時無法採用新設備

  • September 23, 2021

我正在嘗試將 Unifi 控制器託管在 docker 容器中,但除非我將網路模式設置為“主機”,否則我無法採用新設備(接入點)。我遵循了幾個指南並打開了此處列出的所有埠。可以管理已連接的設備並找到新設備,但採用它們會導致永無止境的“採用”狀態。

第一個配置基於jacobalberty/unifi

version: "3.7"

services:
 controller:
   image: jacobalberty/unifi:arm32v7
   restart: unless-stopped
   init: true
   volumes:
     - ./data:/unifi
   environment:
     TZ: "Europe/Stockholm"
   ports:
     - "3478:3478/udp"
     - "5514:5514/udp"
     - "8080:8080"
     - "8443:8443"
     - "8843:8843"
     - "8880:8880"
     - "6789:6789"
     - "27117:27117"
     - "5656-5699:5656-5699/udp"
     - "1900:1900"
     - "10001:10001/udp"
#    network_mode: "host"

另一個是linuxserver.io範例的直接副本:

version: "2.1"
services:
 unifi-controller:
   image: linuxserver/unifi-controller
   container_name: unifi-controller
   environment:
     - PUID=1000
     - PGID=1000
     - MEM_LIMIT=1024M #optional
   volumes:
     - ./data:/config
   ports:
     - 3478:3478/udp
     - 10001:10001/udp
     - 8080:8080
     - 8443:8443
     - 1900:1900/udp #optional
     - 8843:8843 #optional
     - 8880:8880 #optional
     - 6789:6789 #optional
     - 5514:5514 #optional
   restart: unless-stopped

docker 容器在連接到有線網路的 Raspberry Pi 上執行。主機正在執行其他容器,但沒有衝突的埠。如果存在埠衝突,無論如何都不應該啟動容器。

問題是容器不知道主機的本地 IP 地址,所以它不能告訴 AP 它應該使用什麼 IP 地址來連接回來。

要解決此問題,您必須手動設置控制器 IP 地址,Settings -> Controller -> Controller Hostname/IP並且不要忘記檢查Override inform host with controller hostname/IP

在 Adopting Access Points/Switches/Security Gateway下的jacobalberty/unifi 映像的描述中有更多關於此的資訊。

要添加到上述解決方案中,一旦我在設置中更新了控制器 IP,就必須重新啟動 docker 容器才能永久保存更改。在您的 AP 中使用 SSH 並執行快速資訊命令(只需在登錄後輸入資訊)以驗證狀態是否顯示已連接並連接到正確的 IP 而不是內部 docker 網路也是一個好主意:

狀態:已連接(http://192.168.1.X:8080/inform

引用自:https://serverfault.com/questions/1040002