iT邦幫忙

2023 iThome 鐵人賽

DAY 12
0
DevOps

搞定Docker網路系列 第 12

Docker的網路-討論WAN IP之前

  • 分享至 

  • xImage
  •  

先說讓container可以讓internet ip看到,不是很簡單的事情,而這也是一切撰寫這次鐵人賽的起點,試過幾個偏方,雖然好像可以,但管理上又有點怪,所以在討論之前,想先就docker的五大網路架構說明一下。

  • bridge:預設,又分成user defined跟default。
  • host:就只有一個host
  • overlay:swarm這類叢集使用的。
  • macvlan:為了802.1q應用使用的。
  • none:沒有網路。

之前有講解過固定IP,可以用來讓container之間互連,還有一種是在-p的時候,bind ip,就可以讓該container只有經由該指定的ip:port連線。

實做時有發現一個現象。

我們來看環境:

nmcli show

  • wlan:我的無線網卡,然後我是用iTaiwan

  • docker0:安裝docker會預設建立的bridge虛擬網卡

  • br1:我使用brctl addbr新增的虛擬網卡

  • Q1:iTaiwan取得的無線網卡ip,跟whatmyip不一樣

這邊只能研判itaiwan有做一些ip轉換,網卡取得的ip外面看不到,實際上會再NAT另一個IP。

所以這邊嘗試bind 無線網卡,嘗試當wan ip的作法是失敗的,研判可能是itaiwan的限制。

  • Q2:手機分享網路,會取得跟手機一樣的對外nat ip

筆電我只能取得192.168.x.x這種ip,一樣無法用在wan ip,手機也無法做port forwarding這類的複雜設定。

另外-p bind ip有個限制,就是必須bind的ip存在於ifconfig看到的網卡,如果沒有網卡是這個ip,bind就會失敗:

看起來如果真要玩WAN IP容器服務,在我無法控制前面的網路設備的前提,有種方式就是以下設定好,然後使用WAN IP(以下wan ip都是假的):

docker network create
--driver=bridge
--subnet=8.8.0.0/16
--ip-range=8.8.8.2/32
--gateway=8.8.8.1
br0

當然還有一種前提,就是要實際的讓網卡拿得到WAN IP(如範例是8.8.8.1),這樣這張網卡才能當橋接網卡的GW。

以上是我的猜測,也是我目前測試實際環境中所使用的方式,限制就是這個WAN IP必須跟網卡同網段。


上一篇
Docker的網路-Docker Compose yaml的寫法(Services top-level element network篇)
下一篇
Docker的網路-WAN IP之前再之前,netshoot
系列文
搞定Docker網路31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言