天天看點

Portainer 容器IP 固定

前言​​#​​

雖然使用 docker 部署容器實作所需邀的功能非常友善,但是這是建立在 docker 部署容器時的設定完善的情況下。

部署容器時有一點不可避免:固定容器 IP 。

如果沒有固定配置設定的 IP ,容器提供的服務将是不可靠的:

  • 每次主機重新開機時,如果容器沒有固定 IP ,容器的 IP 将由啟動順序決定。這将導緻類似無法遠端通路資料庫等等情況時,發送錯誤的請求,進而使得服務提供失敗。

建立自定義網絡​​#​​

預設的 ​

​docker0​

​ 網絡是不支援容器固定 IP 到該網段的,必須先建立一個自定義網絡,才能固定容器 IP 到這個自定義網絡中。

  • 否則報錯:Copy
Failure
user specified IP address is supported on user defined networks only      

指令行建立​​#​​

  • 格式:Copy
sudo docker network create --subnet=[自定義網絡廣播位址]/[子網路遮罩位數] [自定義網絡名]      
  • 示例:Copy
sudo docker network create --subnet=172.20.0.0/24 yogile0      
  • ​--subnet​

    ​​ :設定前 24 位為網絡位,後 8 位為主機位,該網段可用 IP 位址:​

    ​172.20.0.1​

    ​​ 到​

    ​172.20.0.254​

    ​ 。
  • 檢視更多參數:Copy
sudo docker network create --hlelp      

Portainer 圖形化建立​​#​​

  • Portainer 中,點選 “Networks” 即可看到網絡清單。

    ​​​

    Portainer 容器IP 固定
    ​​
  • 點選 “Add network” 開始建立網絡。
  • 最簡單的網絡建立需要示例:
  • 最簡單的網絡建立隻需要​

    ​Name​

    ​​ 和​

    ​Subnet​

    ​ 資訊,更多設定同指令行幫助。
  • ​Gateway​

    ​ :如果不填預設網關為首位可用主機名(這裡是 172.20.0.1)。
  • 點選最下面的 “Create the network” 即可完成建立網絡。
  • 回到 “Networks” 即可看到網絡清單中多出了網絡​

    ​yogile0​

    ​​ 。

    ​​​​​

固定容器 IP​​#​​

指令行固定​​#​​

  • 簡單格式:
  • 注意:“標明網絡下固定 IP 位址” 不可是網關位址。

    如果設定網絡時,不填網關,預設為首位可用主機名(這裡是 172.20.0.1)

sudo docker run -it --name [容器名] --net [網絡名] --ip [標明網絡下固定 IP 位址] ubuntu:latest /bin/bash      
  • 示例:Copy
sudo docker run -it --name network-test --net yogile0 --ip 172.20.0.2 ubuntu:latest /bin/bash      

Portainer 圖形化固定​​#​​

  • 建立容器,或者進入一個容器的管理界面時,在 “Advanced container settings -> Network” 中設定固定 IP 。
  • 填寫網絡資訊。
  • ​Network​

    ​ :選擇目标網絡名。
  • ​Hostname​

    ​ :輸入容器網絡名。
  • ​Domain Name​

    ​ :可設定容器域名。
  • ​IPv4 Address​

    ​ :設定固定 IP 位址。
  • 其他選項可以按需填寫。
  • 部署容器。
  • 可以看到容器清單中出現建立的容器。

    ​​​​​