为什么 Docker 容器不应该使用标准端口?

为什么 Docker 容器不应该使用标准端口?

我没有太多使用容器的实际经验,但我看到很多人使用替代端口来部署他们的服务。因此,这里有一个非常基本的问题:在 Docker 容器中,我们为什么要避免标准 TCP/UDP 端口

此类端口的常见示例有 HTTP 的 80、FTP 的 21、HTTPS 的 443、SSH 的 22 等等。通常,这些端口被替换为端口 8080 或 3000 代替 80、443 的 8443 代替 443、22 的 1022 等。

一般来说,进行这些替换有充分的理由:

  • 1024 以下的端口保留给系统进程,因此只有 root 用户可以访问。
  • 在开发过程中通常会避免使用这些系统端口,以防止与可能正在运行的其他服务发生冲突。
  • 有时,此类替代端口被用作实现一定水平的隐秘安全

然而,在我看来,容器的隔离特性决定了人们倾向于使用标准端口。这会带来一些好处,例如由于默认配置,开发和测试会更加容易。

答案1

它可能有助于避免与托管容器的系统发生资源冲突,同时容器可以记录端口号。

相关内容