使用Cloud 66的容器网络—第二部分

2016年9月15日

在第二部分中,我们将从昨天中断的地方开始,对服务配置以及如何启用端口映射将来自容器内部的流量与外部世界进行连接进行更详细的研究。

那里有人吗?

应用程序内部服务的目的是能够响应来自Internet的Web查询。 使用基于容器的体系结构,要使在这些容器中运行的服务可用于容器外部的资源,您需要提供一个从内部到外部世界的“桥梁”。 这不仅与HTTP通信有关,还包括Web套接字,数据库容器或自定义TCP / UDP通信。

在容器内运行的代码侦听特定端口,并且默认情况下,Web服务器的标准设置将侦听HTTP的端口80和HTTPS流量的443。 所有应用程序都监听这些端口,因此站点访问者无需在浏览器中输入端口号。 这是不同的编程框架或应用程序服务器使用的默认端口的列表:

集装箱港口映射

您可以使用Cloud 66中的Container Port Mapping功能创建端口映射。 它是一种易于使用且灵活的功能,支持常见的TCP协议(例如HTTP和HTTPS)以及自定义TCP和UDP流量。

端口选项使您可以为服务指定端口定义,包括CONTAINER_PORT:HTTP_PORT:HTTPS_PORT列表。 值得注意的是,HTTP_PORT和HTTPS_PORT字段是可选的,如果您愿意的话,可以使用不带HTTP的HTTPS,反之亦然。 您可以通过包括冒号来做到这一点,但是将相应的端口号留空。 您还可以为单个服务定义多个端口定义三元组,例如:

 服务: 

端口:[“ 3000:80:443”,“ 4000 :: 8443”,“ 5000”]

在上面的示例中,应用程序正在侦听容器中的端口3000,并且该端口通过端口80上的HTTP和端口443上的HTTPS公开。容器内部的端口4000在外部的端口8443和端口5000中也可用。容器在服务器上本地可用。

如果使用service.yml文件配置服务,则可以使用以下格式指定端口:InsidePort:HTTP_Port:HTTPS_Port:

 服务: 
my_service:
端口:[“ 3000:80:443”]

此语法使您可以告诉Cloud 66您不希望该服务仅在HTTPS上可用:

 服务: 
my_service:
端口:[“ 3000 :: 443”]

您可以通过删除最后一部分来省略HTTPS端口:

 服务: 
my_service:
端口:[“ 3000:80”]

这些HTTP / HTTPS端口可从服务器外部使用,并且到这些端口的所有流量都将重定向到运行此服务的任何容器。 在扩展期间,任何运行此服务的容器都将以循环方式将流量分配给它们。

如果您的应用程序不提供HTTP流量(例如数据库),则可以通过指定协议(TCP或UDP)以及在容器内侦听的端口,将端口映射到您想要的端口公开可用。

例如:一个服务监听UDP上的5454端口,我们希望在该端口上将其提供给外部端口111:

 服务: 
my_service:
端口:
- 容器:
5454 udp:111

有关所有容器端口映射功能的更多信息,请参见我们的服务网络设置帮助页面。 我们的社区网站上有更多类似的内容,您也可以加入Cloud 66 Slack频道。

谢谢,祝您编程愉快。