Docker4Windows -- 從外部(非本機host)訪問 由docker container運行的程序


背景

當我們在windows 上面運行docker container的時候,我們需要借助於模擬器(例如,Virtual box/Hyper V),她的目的主要是在我們的windows系統上面模擬出一個Linux環境來運行docker engine,從而在實現在windows機器上面跑docker.。通常,我們把這個模擬器稱理解為為docker machine。

 

然而,由此產生了一個問題,那就是相對於Linux,我們在Windows上面跑docker的時候,docker與host之間就多出來了一個中間層(docker machine)。所以,當我們需要在非本機上面訪問由container提供的“服務”時,除了expose host/container的端口之外,還需要保證中間層暢通。

 

設置docker machine

具體的方法很簡單,就是通過設置virtual box 的網絡配置/轉發規則。 具體的步驟如下:

 

  1. Open Oracle VM VirtualBox Manager

  2. Select the VM used by Docker

  3. Click Settings -> Network

  4. Adapter 1 should (default?) be "Attached to: NAT"

  5. Click Advanced -> Port Forwarding

  6. Add rule: Protocol TCP, Host Port 1521, Guest Port 1521(leave Host IP and Guest IP empty)

 

貌似有點亂呀,沒看懂?沒關系!,下面舉例說明並配有截圖(有真相)

 

我這里的示例是用docker跑一個oracle server 的container,他運行在一台windows機器上面(Host A),然后我在另一個windows機器(Host B)上面鏈接oracle server.

 

1. 我這里省略了部分container 的過程,只列出CLI

$ docker run -itd --name=xxx --network=xxxNet --hostname=xxx  -p 1521:1521 oracledb11g_img:v1 /bin/bash

 

2. virtual box 中關於網絡的配置:

 

 3. 在另外一台機器上通過SQL Deverloper 鏈接由docker continer創建的數據庫

 

Done!! 證明由docker container 承載的 oracle server 可以被其他機器訪問。  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM