我没有太多使用容器的实际经验,但我看到很多人使用替代端口来部署他们的服务。因此,这里有一个非常基本的问题:在 Docker 容器中,我们为什么要避免标准 TCP/UDP 端口?
此类端口的常见示例有 HTTP 的 80、FTP 的 21、HTTPS 的 443、SSH 的 22 等等。通常,这些端口被替换为端口 8080 或 3000 代替 80、443 的 8443 代替 443、22 的 1022 等。
一般来说,进行这些替换有充分的理由:
- 1024 以下的端口保留给系统进程,因此只有 root 用户可以访问。
- 在开发过程中通常会避免使用这些系统端口,以防止与可能正在运行的其他服务发生冲突。
- 有时,此类替代端口被用作实现一定水平的隐秘安全。
然而,在我看来,容器的隔离特性决定了人们倾向于使用标准端口。这会带来一些好处,例如由于默认配置,开发和测试会更加容易。
答案1
它可能有助于避免与托管容器的系统发生资源冲突,同时容器可以记录端口号。