我的牧场主主机(中心)中有2个IP地址:1.1.1.1
和2.2.2.2
1.1.1.1
是我要用于访问rancher UI和SSH进入主机的IP地址。
我想使用2.2.2.2
访问应用程序的容器。我有2个容器,一个nginx和一个ssh。我将容器配置为使用映射到80
的主机端口2.2.2.2:80
和使用22
映射到主机端口2.2.2.2:22
的容器。
我还更改了牧场服务器的默认运行命令,以监听IP 80
的端口443
和1.1.1.1
如果我进入浏览器并访问1.1.1.1
,则会看到牧场主符合预期;如果访问2.2.2.2
,我将看到容器应用程序符合预期。
但是,如果我尝试访问1.1.1.1:22
,我最终会连接到容器ssh,该容器应该只监听2.2.2.2:22
。
我在这里错过了什么吗?这是主机还是容器上的配置问题?容器可以访问它甚至不应该知道的东西吗?
更新
让我尝试澄清设置:
Rancher在具有2个IP地址的主机中运行。运行rancher时,我将执行以下命令,因此该命令将附加到第一个IP地址:
docker run -d --volumes-from rancher-data --restart=unless-stopped -p 1.1.1.1:80:80 -p 1.1.1.1:443:443 rancher/rancher
docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.1.7 --server https://rancher1.my.tld --token [token] --ca-checksum [checksum] --etcd --controlplane --worker
我在rancher UI中配置了4个容器,我想指向2.2.2.2:22
和2.2.2.2:80
,2.2.2.2:2222
和2.2.2.2:8080
这些是应用程序的2个环境。 22
和80
是LIVE环境的nginx和ssh容器(在它们之间共享数据量),而2222
和8080
则是相同的东西,它们分别是质量检查环境。我使用ssh容器通过共享数据卷将内容上传到nginx容器。
除了配置ssh机器以使用端口22
时,当我尝试连接到主机ssh时,我已连接到容器ssh,这一配置没有任何问题。
更新2
以下是容器中端口映射设置的屏幕截图:https://snag.gy/idTjoV.jpg
已将容器端口22
映射到IP 2.2.2.2:222
如果我将其设置为2.2.2.2:22
,则用于主机的SSH将停止工作,并且将与容器建立ssh连接。