當前位置:首頁 » 安全設置 » docker怎麼設置網路編程
擴展閱讀
電腦間隔出現黑屏 2024-11-01 08:26:20

docker怎麼設置網路編程

發布時間: 2023-11-11 16:39:26

⑴ docker容器怎樣實現綁定公網IP/浮動IP

有多種方法:
1、把埠用 --publish forward 進容器里,或者說把埠發布出來。如 docker run -p 80:80 nginx
2、把某個虛擬或物理 interface bridge 進容器里,可以用一個叫 pipework 的工具:
3、直接不對容器網路做虛擬化/隔離,用 --net=host
准備工作
在使用 weave 之前,你需要在所有宿主機上安裝 Docker 環境,參考這些教程,在 Ubuntu 或 CentOS/Fedora 發行版中安裝 Docker。
Docker 環境部署完成後,使用下面的命令安裝 weave:
$ wget https://github.com/zettio/weave/releases/download/latest_release/weave
$ chmod a+x weave
$ sudo cp weave /usr/local/bin
注意你的 PATH 環境變數要包含 /usr/local/bin 這個路徑,請在 /etc/profile 文件中加入一行(LCTT 譯註:要使環境變數生效,你需要執行這個命令: source /etc/profile):
export PATH="$PATH:/usr/local/bin"
在每台宿主機上重復上面的操作。
Weave 在 TCP 和 UDP 上都使用 6783 埠,如果你的系統開啟了防火牆,請確保這兩個埠不會被防火牆擋住。

在每台宿主機上啟動 Weave 路由器
當你想要讓處於在不同宿主機上的容器能夠互相通信,第一步要做的就是在每台宿主機上啟動 weave 路由器。
第一台宿主機,運行下面的命令,就會創建並開啟一個 weave 路由器容器(LCTT 譯註:前面說過了,weave 路由器也是一個容器):
$ sudo weave launch
第一次運行這個命令的時候,它會下載一個 weave 鏡像,這會花一些時間。下載完成後就會自動運行這個鏡像。成功啟動後,終端會輸出這個 weave 路由器的 ID 號。
下面的命令用於查看路由器狀態:
$ sudo weave status

第一個 weave 路由器就緒了,目前為止整個 peer 對等網路中只有一個 peer 成員。
你也可以使用 docker 的命令來查看 weave 路由器的狀態:
$ docker ps

第二台宿主機部署步驟稍微有點不同,我們需要為這台宿主機的 weave 路由器指定第一台宿主機的 IP 地址,命令如下:
$ sudo weave launch <first-host-IP-address>
當你查看路由器狀態,你會看到兩個 peer 成員:當前宿主機和第一個宿主機。

當你開啟更多路由器,這個 peer 成員列表會更長。當你新開一個路由器時,要指定前一個宿主機的 IP 地址,請注意不是第一個宿主機的 IP 地址(LCTT 譯註:鏈狀結構)。
現在你已經有了一個 weave 網路了,它由位於不同宿主機的 weave 路由器組成。

把不同宿主機上的容器互聯起來
接下來要做的就是在不同宿主機上開啟 Docker 容器,並使用虛擬網路將它們互聯起來。
假設我們創建一個私有網路 10.0.0.0/24 來互聯 Docker 容器,並為這些容器隨機分配 IP 地址。
如果你想新建一個能加入 weave 網路的容器,你就需要使用 weave 命令來創建,而不是 docker 命令。原因是 weave 命令內部會調用 docker 命令來新建容器然後為它設置網路。
下面的命令是在宿主機 hostA 上建立一個 Ubuntu 容器,然後將它放到 10.0.0.0/24 網路中,分配的 IP 地址為 10.0.0.1:
hostA:~$ sudo weave run 10.0.0.1/24-t -i ubuntu
成功運行後,終端會顯示出容器的 ID 號。你可以使用這個 ID 來訪問這個容器:
hostA:~$ docker attach <container-id>
在宿主機 hostB 上,也創建一個 Ubuntu 容器,IP 地址為 10.0.0.2:
hostB:~$ sudo weave run 10.0.0.2/24-t -i ubuntu
訪問下這個容器的控制台:
hostB:~$ docker attach <container-id>
這兩個容器能夠互相 ping 通,你可以通過容器的控制台檢查一下。

如果你檢查一下每個容器的網路配置,你會發現有一塊名為「ethwe」的網卡,你分配給容器的 IP 地址出現在它們那裡(比如這里分別是 10.0.0.1 和 10.0.0.2)。

Weave 的其他高級用法
weave 提供了一些非常巧妙的特性,我在這里作下簡單的介紹。

應用分離
使用 weave,你可以創建多個虛擬網路,並為每個網路設置不同的應用。比如你可以為一群容器創建 10.0.0.0/24 網路,為另一群容器創建 10.10.0.0/24 網路,weave 會自動幫你維護這些網路,並將這兩個網路互相隔離。另外,你可以靈活地將一個容器從一個網路移到另一個網路而不需要重啟容器。舉個例子:
首先開啟一個容器,運行在 10.0.0.0/24 網路上:
$ sudo weave run 10.0.0.2/24-t -i ubuntu
然後讓它脫離這個網路:
$ sudo weave detach 10.0.0.2/24<container-id>
最後將它加入到 10.10.0.0/24 網路中:
$ sudo weave attach 10.10.0.2/24<container-id>

現在這個容器可以與 10.10.0.0/24 網路上的其它容器進行通信了。這在當你創建一個容器而網路信息還不確定時就很有幫助了。

將 weave 網路與宿主機網路整合起來
有時候你想讓虛擬網路中的容器能訪問物理主機的網路。或者相反,宿主機需要訪問容器。為滿足這個功能,weave 允許虛擬網路與宿主機網路整合。
舉個例子,在宿主機 hostA 上一個容器運行在 10.0.0.0/24 中,運行使用下面的命令:
hostA:~$ sudo weave expose 10.0.0.100/24
這個命令把 IP 地址 10.0.0.100 分配給宿主機 hostA,這樣一來宿主機 hostA 也連到了 10.0.0.0/24 網路上了。顯然,你在為宿主機選擇 IP 地址的時候,需要選一個沒有被其他容器使用的地址。
現在 hostA 就可以訪問 10.0.0.0/24 上的所有容器了,不管這些容器是否位於 hostA 上。