在 Docker 中提供網路服務

Docker 中級

Mike Metzger

Data Engineering Consultant

網路服務

  • 網路服務會在指定埠號上「監聽」
  • 同一時間只能有一個程式在某個 IP:埠號 組合上監聽
    • 例如,10.1.2.3:80 代表在 10.1.2.3 的 80 埠監聽。
  • 假設你想同時除錯多個監聽在 80 埠的網頁伺服器版本
    • 因為只監聽該埠,所以一次只能執行一個應用程式
Docker 中級

容器化服務

  • 把應用程式包進容器後,每個容器都有不同 IP,因此各自可在同一埠監聽(IP:埠號 組合不同)
  • 你可以同時執行多個容器複本
  • 但主機要如何連到容器內的應用程式?
Docker 中級

埠號對應

  • 解法是使用「埠號對應」(也稱轉送/轉譯)
  • 埠號對應會把連到某個 IP:埠號 的連線,自動轉送到另一個 IP:埠號 組合
  • 本例可把主機上一個未使用的埠,對應到容器的 80 埠
  • 只要設定好,Docker 引擎會自動處理

埠號對應範例

Docker 中級

啟用埠號對應

  • 要在容器啟用埠號對應,使用 docker run 指令與 -p 旗標
  • -p <host port>:<container port>
  • -p 5501:80
  • 可為不同埠號加上多個 -p 旗標
repl@host:~$ docker run -p 5501:80 nginx

repl@host:~$ docker ps -a
CONTAINER ID IMAGE ... PORTS NAMES 84266724ff47 nginx ... 0.0.0.0:5501->80/tcp, :::5501->80/tcp coiled_elgamal
Docker 中級

一起來練習吧!

Docker 中級

Preparing Video For Download...