iT邦幫忙

0

Docker for Mac VPN 直通 Container IP 位址

  • 分享至 

  • xImage
  •  

Docker Desktop for Mac 缺少 Linux 版本的 docker0 bridge 介面,因而 MAC Host 本身無法與 Container IP 直接溝通。 https://docs.docker.com/docker-for-mac/networking/ (docker官網)

Docker desktop community : 2.4.0.0 ( 48506)
Engine : 19.03.13 , Composse : 1.27.4 , Kubernetes : 1.18.8

搜尋看到了 Yowko’s Notes [ 從 mac 使用 Container Ip 直連 ] 的文章,趁假日空閒時間就來實作試試。

依照文章步驟,在 啟用 Docker for Mac 的 Kubernetes 功能設定..就卡關。等待許久的時間,Google 發現有不少 Kubernetes always stuck at 'Starting' 的問題,試過「Reset Kubernetes cluster」似乎無效,最後只好出大招──將 Docker( Reset to factory defaults )回復原設定值,Kubernetes 也因此啟用成功了。

註: 首次啟用或許太過心急,Kubernetes 下載安裝需要時間。選擇了回復原設定值,也一併將之前的 Docker Image 都清空。

接下來brew install Helm (安裝的版本為 V3.3.4),依照步驟 8 執行指令,出現 --generate-name 錯誤訊息

helm install docker-for-mac-openvpn-0.1.0.tgz -n docker-for-mac-openvpn

應該是新的版本已經不需要 -n 參數,所以將指令進行修改後可以執行,不過卻沒有產生 docker-for-mac.ovpn 檔案。 docker ps -a , Container 似乎在不斷重複的執行、停止。 眼看無法繼續接下來其他步驟,只好放棄。

helm install docker-for-mac-openvpn docker-for-mac-openvpn-0.1.0.tgz

工程師的使命,不死心的換參考 Yowko’s Notes 下列連結 [ Docker for Mac 容器网络的直连方法 ] , 先用 Kubernetes 運行的方式安裝,結果同樣失敗,沒有產生 docker-for-mac.ovpn。
換用 Docker Compose 方式 , 順利的產生 docker-for-mac.ovpn ,編輯檔案的末尾新增 Docker for MAC Container IP 網段 ( 172.17.0.0/16 )

route 172.17.0.0 255.255.0.0

然後將 docker-for-mac.ovpn 檔案 拖拉到 MacOS OpenVPN 客戶端程式 Tunnelblick , 選擇[ 連接 docker-for-mac ] , 結果是無法建立 Openvpn 連線。

Docker 功力不夠,無法對 docker-compose.yml 進行修改,只好繼續 Google。 台部落 - [ 完美解決 MacOS 下不能 ping Docker 容器的問題 | MacOS 使用 ssh 鏈接容器 ],採用 docker-compose 方式,指令跟步驟有些不一樣, 所以又再一次的實作看看。

  1。 下載 Github 程式 https://github.com/wojas/docker-mac-network
  2。 修改 helpers 目錄下的 run.sh .  與文章內容相同  route 172.17.0.0 255.255.0.0 
  3。 執行 docker-compose up  ( 沒有 -d  Detached mode:, 會顯示程式執行的狀況) 

執行的狀況在 config 目錄底下一直有 .bak 檔產生,畫面也一直出現 The file '/etc/openvpn/vars' was not found. 的錯誤訊息,同樣等了一段時間,終究還是沒有 docker-for-mac.ovpn 檔案產生。
[ 容器网络的直连方法 ] docker-compose.yml 可以正常產生檔案,所以聯想到比對一下兩個 Github Project docker-compose.yml程式的差異. 將 image: kylemanna/openvpn 加上 2.4 , volumes 也稍微修改一下後。 執行 docker-compose up , 出現「 Initialization Sequence Completed 」就順利產生 docker-for-mac.ovpn 檔案。

docker-mac-network-master ─ docker-compose.yml 檔案修改

   修改後 :                              修改前 :  
  openvpn:                                 openvpn:
     image: kylemanna/openvpn:2.4             image: kylemanna/openvpn:
     volumes:                                 volumes:
         - .:/data                                - .:/local
         - .:/local                               - ./config:/etc/openvpn
         - ./local/config:/etc/openvpn        network_mode: host
     network_mode: host

台部落的文章,對於編輯 docker-for-mac.ovpn 有提到一坑,「需要加一個 comp-lzo yes 屬性」(註:route ip 網段已經自動加入),加上後,再次拖拉到 OpenVPN 的客户端 Tunnelblick 。
感動~~ OpenVPN 連線成功。但是 .... MAC host 還是同樣 Ping 不到 Container IP 位址。 落淚 /images/emoticon/emoticon02.gif

從 Container 顯示的訊息中,有一行警告。 將 comp-lzo yes 屬性 刪除,再重新匯入 Tunnelblick。
終於~~ 完成 Docker for MAC 直通容器網路 的設定.

WARNING: 'comp-lzo' is present in remote config but missing in local config,

Container 容器名稱:

停止 :
         docker stop docker-mac-network-master_proxy_1
         docker stop docker-mac-network-master_openvpn_1

圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言