CodeGym /课程 /Docker SELF /容器端口发布

容器端口发布

Docker SELF
第 17 级 , 课程 3
可用

4.1 端口发布的基本概念

端口发布 是 Docker 中让容器内部运行的服务可从外部网络或主机访问的重要功能。这是多容器应用程序配置中的重要部分,因为它允许与服务进行交互,比如 Web 服务器、数据库和其他网络应用程序。在这节课中,我们将学习如何发布容器端口和配置服务的访问权限。

端口发布的基本概念

  • 端口映射: 将主机端口和容器端口对应起来。
  • 参数 -p/--publish: 在启动容器时用于指定端口映射。
  • 参数 -P/--publish-all: 自动为容器的所有导出端口分配主机端口。

使用 -p 参数的示例

启动容器时,可以使用 -p 选项将主机端口映射到容器端口。命令格式如下:

Terminal

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

示例 1: 发布 Nginx 的 Web 服务器端口

我们启动一个 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 

现在可以通过 http://localhost:8080https://localhost:8443 访问 Nginx。

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