前言
雖然使用 docker 部署容器實現所需邀的功能非常方便,但是這是建立在 docker 部署容器時的設置完善的情況下。
部署容器時有一點不可避免:固定容器 IP 。
如果沒有固定分配的 IP ,容器提供的服務將是不可靠的:
- 每次主機重啟時,如果容器沒有固定 IP ,容器的 IP 將由啟動順序決定。這將導致類似無法遠程訪問數據庫等等情況時,發送錯誤的請求,從而使得服務提供失敗。
創建自定義網絡
默認的 docker0 網絡是不支持容器固定 IP 到該網段的,必須先創建一個自定義網絡,才能固定容器 IP 到這個自定義網絡中。
-
否則報錯:
Failure user specified IP address is supported on user defined networks only
命令行創建
-
格式:
sudo docker network create --subnet=[自定義網絡廣播地址]/[子網掩碼位數] [自定義網絡名] -
示例:
sudo docker network create --subnet=172.20.0.0/24 yogile0--subnet:設置前 24 位為網絡位,后 8 位為主機位,該網段可用 IP 地址:172.20.0.1到172.20.0.254。

-
查看更多參數:
sudo docker network create --hlelp
Portainer 圖形化創建
-
Portainer 中,點擊 “Networks” 即可看到網絡列表。

-
點擊 “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 -
-
示例:
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 地址。- 其他選項可以按需填寫。

-
部署容器。
-
可以看到容器列表中出現創建的容器。

