一、 简介
- 需求:IT公司里面都是需求驱动制,昨天盆友丢给我一个问题
使用Rancher创建的容器,查不到端口映射,容器跑起来了,但是在浏览器中使用ip+port无法访问到容器内部的服务。没办法确定是宿主机/容器端口映射出问题,还是容器内部服务没启动
。文章围绕着解决这个问题而展开。本人将该问题分为两部分:首先介绍Rancher的快速使用,然后在另一片文章介绍Rancher内部的docker网络机制。 - 内容:快速搭建Rancher服务,使用Rancher创建容器,排查相关问题
- 环境:Centos+虚拟机(出问题)、Centos+服务器
二、安装过程及问题分析
-
开启rancher服务
- 环境:linux+服务器
sudo docker run -d --restart=always -p 9966:8080 rancher/server
(启动rancher server)
sudo docker logs -f <CONTAINER_ID>
(查看日志)
- 容器启动完毕后使用
主机ip+端口号
(192.168.131.191:9966)即可访问rancher的UI界面
-
添加主机
在这里,为了简化操作,我们将添加运行着Rancher Server的主机为Rancher内的主机。在实际的生产环境中,请使用专用的主机来运行Rancher Server。-
步骤如下图所示(host-addhost-save-copy-run in host-close):
-
在运行server容器的宿主机上面执行复制出来的命令,即可开启Rancher agent。然后在UI节目可看到添加的主机信息
sudo docker run --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.11 http://192.168.31.191:9966/v1/scripts/58DC07B475EFEF23411C:1546214400000:1007gJSboVnWjnmPQyfAdb8UbI
-
-
使用rancher创建容器
使用Rancher创建一个nginx容器,开放本地的10086端口(10086->80)
-
宿主机ip+端口号访问nginx(192.168.31.191:10086)
注意:1.初始安装时Rancher的访问控制并未配置,任何能够访问你的IP地址的人,都可以访问你的UI和API。我们建议你配置 访问控制. 2. 国内的公有云主机,如果需要使用80和8080端口,需备案后才可以使用。(官网原话) -
到运行容器的主机上
docker ps |grep nginx
,奇怪的事情发生了, 缺少了docker容器的宿主机端口与容器端口的映射信息
-
docker run -d --name nginx docker.io/nginx
(使用docker cli 创建一个新的容器对比)
-
docker inspect --format '{{ .NetworkSettings.IPAddress }}' <container ip>
也没返回容器的ip信息 -
docker ps
、docker inspect
都没办法返回容器的ip信息,那么上面提到的问题怎么解决呢? -
netstat -apn|grep 10086
也没查到宿主机监听的端口信息,但是使用ip+port确实可以访问到nginx容器? -
欲知后事如何,却看下篇文章
三、总结
Rancher是一个开源的企业级容器管理平台。通过Rancher,企业再也不必自己使用一系列的开源软件去从头搭建容器服务平台。Rancher提供了在生产环境中使用的管理Docker和Kubernetes的全栈化容器部署与管理平台。本文主要介绍Rancher的快速使用和引出使用Rancher创建容器与docker cli创建容器的区别,希望给同是Rancher初学者的博友们占个坑,少走一些弯路。介绍中提出的问题将在下一篇文章Rancher的快速使用及问题分析(二)之网络驱动分析与问题解决详细说明,敬请关注。本人旨在分享技术,文章写的不好或者不多的地方请多多指正,将不胜感激。本文属于原创,若有引用请注明出处。若有疑问或错误,欢迎各位指出,可以评论或者跟本人联系。