CodeGym /Adesua ahorow /Docker SELF /容器端口發布

容器端口發布

Docker SELF
等級 17 , 課堂 3
開放

4.1 發布端口的基本概念

發布端口 是讓 Docker 容器內運行的服務可以從外部網絡或主機訪問的一種方式。這是配置多容器應用的重要部分,因為它允許訪問像 Web 服務器、數據庫和其他網絡應用這樣的服務。在這節課中,我們會講解如何發布容器的端口以及設置服務的訪問方式。

發布端口的基本概念

  • 端口映射 (port mapping): 將主機端口對應到容器端口。
  • 參數 -p/--publish: 在啟動容器時指定端口映射的參數。
  • 參數 -P/--publish-all: 自動為所有容器暴露的端口分配主機端口。

參數 -p 的使用示例

啟動容器時,你可以使用選項 -p 將主機端口映射到容器端口。命令格式如下:

Terminal

docker run -d -p <host_port>:<container_port> <image> 

示例 1: 發布 Nginx 網頁服務器的端口

啟動一個帶有 Nginx 的容器,並將容器的 80 端口發布到主機的 8080 端口。

現在 Nginx 可以通過 http://localhost:8080 訪問。

Terminal

docker run -d -p 8080:80 --name mynginx nginx 

示例 2: 發布多個端口

你可以通過指定多個 -p 選項來發布多個端口。

在這個示例中,Nginx 可以通過 HTTP 的 8080 端口和 HTTPS 的 8443 端口訪問。

Terminal

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

參數 -P 的使用示例

參數 -P 會自動將 Dockerfile 或容器設置中指定的所有端口分配到 隨機的主機端口

示例:

Terminal

docker run -d -P --name mynginx nginx 

要查看哪些端口被分配,可以使用命令 docker port:

Terminal

docker port mynginx

輸出會類似於這樣:

Terminal

80/tcp -> 0.0.0.0:32768
443/tcp -> 0.0.0.0:32769

4.2 在 Docker Compose 中發布埠

要在 Docker Compose 中設定埠,請使用文件 docker-compose.yml 裡的 ports 指令。

docker-compose.yml 文件範例

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
      - "8443:443"

啟動 Docker Compose:

Terminal

docker compose up -d 

現在 Nginx 可以通過 http://localhost:8080https://localhost:8443 訪問。

4.3 發布埠的其他參數

1. 限制 IP 地址

你可以透過指定主機的 IP 地址來限制對容器埠的訪問。

範例:

在這個例子中,Nginx 只會在本地主機上透過地址 http://127.0.0.1:8080 被訪問。

Terminal

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

2. 使用埠範圍

你可以指定一個埠範圍來發布。

範例:

Terminal

docker run -d -p 8080-8081:80-81 --name mynginx nginx 

實用建議:

  • 只發布必要的埠:只發布那些真正需要用來訪問服務的埠,以減少潛在的漏洞。
  • 使用防火牆:設定防火牆以限制對已發布埠的訪問,僅允許受信任的 IP 地址。
  • 監控和記錄:使用監控和記錄工具來跟蹤對已發布埠的訪問並識別可疑活動。
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION