问题:
Rancher 中默认运行一个nginx服务(1个容器),为什么在主机端无法访问?
步骤:
在Rancher创建nginx服务的页面中,默认运行一个Nginx服务,不做任何端口映射,创建一个Nginx服务(只包含1个Nginx容器),直接在主机端的浏览器上,访问nginx容器的10.42.xx.xx地址,无法访问。
解答:
这样的设置,没有为Nginx服务映射主机端口,运行的nginx容器只能在私有网络中访问,在容器IP地址所属的私有网络中,是可以访问该容器IP地址的80端口的。
为了验证在私有网络中可以访问Nginx服务,可以再运行一个Alpine容器,通过Rancher页面,可以知道Alpine容器和Nginx容器分配的IP地址。我们可以发现,这个Alpine容器和Nginx容器的IP地址处于同一私有网段,比如10.42.xx.xx/16,因此两个容器之间可以直接通讯。
在Alpine容器中使用apk update && apk add curl命令安装curl工具,在Alpine容器中访问Nginx容器的80端口,执行curl“Nginx容器IP地址” ,可以得到html页面的内容。
如果要想在主机端访问Nginx容器,必须要在创建nginx服务时,映射一个主机端口到容器端口。容器启动以后,在主机端的浏览器上,就可以访问主机及端口。