CodeGym /課程 /Docker SELF /端口重定向

端口重定向

Docker SELF
等級 12 , 課堂 1
開放

7.1 埠轉發基礎 (Port forvarding)

埠轉發是 Docker 的一個很重要的功能,這讓容器內的應用程式可以從外部訪問。這功能是為了從宿主機或其他網路中連接運行在容器中的 Web 伺服器、資料庫或其他服務。

預設情況下,容器在隔離的網路中運行。為了讓容器中的服務可訪問,Docker 將容器埠轉發到宿主機的埠。

要執行埠轉發,可以使用 -p--publish 參數搭配 docker run 命令。

語法


docker run -p [HOST_PORT]:[CONTAINER_PORT] [OPTIONS] IMAGE [COMMAND] [ARG...]

其中:

  • HOST_PORT: 宿主機上的埠,流量會通過它進入。
  • CONTAINER_PORT: 容器內的埠,流量會被轉發到這裡。
  • OPTIONS: 設置容器的其他參數。
  • IMAGE: 用於創建容器的映像。
  • COMMAND: 在容器內執行的命令。
  • ARG...: 命令的參數。

基本使用範例

這例子將執行 Web 伺服器 Nginx 的容器埠 80 轉發到宿主機的埠 8080。之後你可以在瀏覽器中通過 http://localhost:8080 訪問 Web 伺服器。


docker run -d -p 8080:80 nginx

7.2 其他端口轉發方式

1. 多重端口轉發

Docker 支援同時轉發多個端口喔!可以用多個選項 -p 一起設置。

範例

在這個範例裡,容器的 80 端口被轉發到主機的 8080 端口,容器的 443 端口被轉發到主機的 8443 端口。



docker run -d -p 8080:80 -p 8443:443 nginx

2. 指定 IP 地址的端口轉發

可以指定特定的 IP 地址來綁定轉發的端口哦!如果主機有多個網絡介面,這個功能特別方便,而且可以限制對容器的訪問權限。

範例:

在這個範例中,容器的 80 端口只被轉發到主機介面 127.0.0.1 的 8080 端口。所以服務只能從主機內部訪問。


docker run -d -p 127.0.0.1:8080:80 nginx

3. 範圍端口轉發

要一次轉發多個端口的話,Docker 支援處理範圍設置。

範例:

在這個範例中,容器的 70008000 端口範圍被轉發到主機對應的端口範圍。


docker run -d -p 7000-8000:7000-8000 someimage

7.3 實際使用場景

1. 訪問網頁伺服器

端口轉發最常用於確保訪問運行於容器內的網頁伺服器。


docker run -d -p 8080:80 nginx 

執行這條指令後,運行在容器80端口上的 Nginx 網頁伺服器將可以通過主機機器的8080端口訪問。

2. 訪問資料庫

端口轉發對於訪問運行於容器中的資料庫也非常方便。


docker run -d -p 5432:5432 -e POSTGRES_PASSWORD=mysecretpassword postgres

在這個例子中,運行於容器5432端口的 PostgreSQL 將可以通過主機機器的5432端口訪問。

3. 測試與開發

Docker 容器經常被用來生成隔離的測試環境。端口轉發允許開發者運行並測試應用程序,就像它們在真實環境中運行一樣。


docker run -d -p 8080:80 -p 8443:443 myapp

在這個例子中,應用程式在8080和8443端口上進行測試,這和工作環境中使用的標準端口一致。

7.4 其他建議

1. 端口保護

當你在轉發端口時,別忘了安全性。開放的端口可能成為攻擊目標。只轉發真的需要的端口,並使用防火牆來限制訪問。

2. 防火牆和NAT

為了加強保護以及管理流量,使用防火牆和Network Address Translation (NAT)。這樣可限制對你服務的訪問和控制網絡連接。

3. 監控和日誌

設置監控和收集日誌,來追蹤轉發端口上的流量。這會幫助你更快發現並應對可疑的活動。

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION