rancher构建容器时设置端口映射到主机上,为啥在主机上用lsof看不到端

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rancher构建容器时设置端口映射到主机上,为啥在主机上用lsof看不到端相关的知识,希望对你有一定的参考价值。

rancher构建容器时设置端口映射到主机上,为什么在主机上用lsof看不到端口占用呢?

访问监控主机的时候,默认是80端口而路由器的管理端口默认也是80这样就造成了冲突你可以改掉路由器或监控主机的默认端口改路由器的比较好这样当外网访问的时候比较方便你做好了花生壳以后还需要把你的那个监控主机设置能DMZ主机、路由器里有那一项你也可以把对WAN口的80端口映射到这台监控主机的80端口如果路由器有防火墙的,还需要把防火墙关闭设置好了这些就可以了这样的配置我以前做过,我用的是希网的域名 参考技术A 使用CNI的影响
Rancher托管IP不会显示在Docker元数据中,这意味着通过docker inspect无法查到IP。因为Rancher使用IPtables来管理端口映射, 任何端口映射也无法通过docker ps显示出来。

如何将容器上的端口映射到主机?

【中文标题】如何将容器上的端口映射到主机?【英文标题】:How do I map a port on a container to the host? 【发布时间】:2019-05-21 22:08:15 【问题描述】:

我正在尝试运行由以下 Dockerfile 描述的容器:

FROM node:11.4.0

RUN npm install -g sh
RUN npm install -g json-server

WORKDIR /data
VOLUME /data
COPY db.json /data

CMD json-server --watch db.json --port 3001

并通过运行指定监听端口:

 docker run -it -p 3001:3001 abelalejandro/json-server:final

容器似乎运行良好,json-server 告诉我它正在端口 3001 上服务我的请求,但在浏览 http://localhost:3001 时我无法获得任何乐趣

我是否在发布/公开端口时遗漏了什么?

【问题讨论】:

【参考方案1】:

它绑定到localhost 而不是0.0.0.0(任何主机)。

你可以通过设置来改变它:

CMD json-server --watch db.json --host 0.0.0.0 --port 3001

我假设您使用的是https://github.com/typicode/json-server。

【讨论】:

作为一个好的做法,我建议将 EXPOSE 指令添加到您的 Dockerfile 中,这将为运行容器的用户提供良好的文档。尝试使用/不使用 EXPOSE 指令构建图像并执行 docker image inspect abelalejandro/json-server:final 以查看附加到图像的更多元数据。

以上是关于rancher构建容器时设置端口映射到主机上,为啥在主机上用lsof看不到端的主要内容,如果未能解决你的问题,请参考以下文章

配置远程连接容器内镜像(映射容器内系统的22端口到宿主机上)

Docker-端口映射

如何将容器上的端口映射到主机?

如何在没有端口映射的情况下将 docker 容器的 ip 和端口暴露给外部 docker 主机?

Rancher - 如何公开我的服务?

Docker容器内部端口号映射到外部宿主机(Ubuntu)端口号