Networking

如何將 Docker 容器配置為具有非預設 IP 地址的唯一 IP 地址?

  • May 13, 2016

如何將 Docker 容器配置為具有非預設 IP 地址的唯一 IP 地址?

Docker 容器將執行 Apache 或一些 Web 服務。這些 Docker 容器將共享一個具有一個物理 NIC 的主機。這些容器必須通過唯一的 IP 地址辨識,並通過埠 80 進行呼叫。工作站將使用 HTTP 下載文件。

我嘗試在 Docker 主機上創建虛擬 IP 地址。但這導致與伺服器的網路連接中斷。

我嘗試安裝 Docker 覆蓋,但我認為它不會幫助我讓工作站使用對容器的 HTTP 請求。Docker 覆蓋似乎面向容器間連接。

我研究過使用聯鎖,但我寧願不使用 Swarm。

這裡最簡單的解決方案是向主機添加額外的地址,然後將一個容器綁定到每個地址。例如,假設您的主機是 192.168.1.20,您可以像這樣添加額外的地址:

ip addr add 192.168.1.21/32 dev eth0
ip addr add 192.168.1.22/32 dev eth0
ip addr add 192.168.1.23/32 dev eth0

然後,在啟動容器時,將容器中的 80 埠發佈到特定主機地址的 80 埠,如下所示:

docker run -p 192.168.1.21:80:80 mywebimage

(這不會改變容器的 IP 地址;它會在給定的 IP 地址和埠與容器的內部 IP 地址和埠之間創建一個映射。)

注意這裡顯示的地址配置不會是持久的;如果您重新啟動主機,您將失去地址。像這樣配置地址的確切方式因發行版而異;有關詳細資訊,請參閱您的分發文件。

引用自:https://unix.stackexchange.com/questions/279632