docker容器的172的ip地址,如何与宿主机之外的网络设备通信?

ops/2024/9/23 18:39:55/

宿主机的地址比如是192.168.1.51

docker容器比如web1,的ip地址是172.17.0.3

容器如何与外界通信?

通过NAT,网络地址转换

首先,宿主机需要设置

echo  'net.ipv4.ip_forward =1 '  >>  /etc/sysctl.conf

sysctl  -p

开启路由转发功能

那么docker 容器就可以用路由转发的方式

通过宿主机和外界通信

但问题是,docker的172网段如何与192.168网段通信。

是由于docker软件在运行容器的时候

会自动配置SNAT和DNAT这些iptables的规则

容器访问外界的时候,报文的源ip被修改为宿主机的ip,

数据返回时,

在宿主机收到响应数据包之后,NAT会根据之前保存的转换记录(NAT表项)将数据包的目的IP地址改回容器的私有IP地址,然后将数据包发送给正确的容器

这样就完成的容器对外界的访问。

外界对容器内部服务访问的链路流程:

外部请求流程:外部客户端发送请求到宿主机的公共IP地址和端口。
请求通过 PREROUTING 链进行 DNAT 转换。
请求通过 INPUT 链到达容器容器处理请求并生成响应。
容器响应流程:容器生成响应数据包。
响应数据包通过 docker0 接口到达宿主机。
响应数据包通过 POSTROUTING 链进行 SNAT 转换。
响应数据包通过外部网络接口发送到外部客户端。

通过这种方式,Docker 自动配置的 NAT 规则确保了外部网络可以访问容器内的服务,同时也保证了容器可以正常响应外部请求。

总的来说,当宿主机上安装了docker软件之后,docker会自动把容器需要用的iptables的四表五链的各种规则设置好,以保证容器与外界的通信。

可以这么来说,k8s作为好用的容器编排管理工具,可以很好的提供自动化容器管理服务。但同时,容器化的基础还是建立在docker联合行业所指定的一系列规则的基础之上的。


http://www.ppmy.cn/ops/114904.html

相关文章

计算机网络笔记002

### 课堂讨论对话 **学生A**: 老师,计算机网络的组成是怎样的?🤔 **老师**: 非常好的问题!计算机网络主要由硬件、软件和通信协议三部分组成。我们先从硬件开始讨论吧。 **学生B**: 硬件包括哪些设备呢?&#x1f60…

weblogic中间件漏洞复现

后台弱口令getshell 1.开启环境 cd vulhub-master/weblogic/weak_password docker-compose up -d docker ps 2.f访问靶场 访问/console/login/LoginForm.jsp这个目录进行登录, 默认账号密码:weblogic/Oracle123 需要注意的是单个账号进行登录时&…

Flink Task 日志文件隔离

Flink Task 日志文件隔离 任务在启动时会先通过 MdcUtils 启动一个 slf4j 的 MDC 环境,然后将 jobId 添加到 slf4j 的 MDC 容器中,随后任务输出的日志都将附带 joid。 MDC 介绍如下: MDC ( Mapped Diagnostic Contexts ),它是一个…

深度学习基础案例5--VGG16人脸识别(体验学习的痛苦与乐趣)

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 前言 这次目标本来要达到60%,但是却非常稳定的达到了40%,​😢​​😢​​😢​​😢​&am…

2024年华为杯数学建模E题-高速公路应急车道启用建模-基于YOLO8的数据处理代码参考(无偿分享)

利用YOLO模型进行高速公路交通流量分析 识别效果: 免责声明 本文所提供的信息和内容仅供参考。尽管我尽力确保所提供信息的准确性和可靠性,但我们不对其完整性、准确性或及时性作出任何保证。使用本文信息所造成的任何直接或间接损失,本人…

【docker】命令之容器操作

一、前言 在上篇博客介绍了关于如何从应用市场,下载镜像后,对镜像的相关操作了。这篇博客呢我们就要讲解我们把镜像下载下来了,启动这个镜像后,就是我们说的容器了,那么容器的具体操作又有那些呢? 二、容器…

案例分析-Stream List 中取出值最大的前 5 个和最小的 5 个值

List<Aaa> 中取出 value 最大的前 5 个和最小的 5 个值 要从 List<Aaa> 中取出 value 最大的前 5 个和最小的 5 个值&#xff0c;我们可以使用 Java 8 的流&#xff08;Stream&#xff09;API 来实现。 代码示例&#xff1a; import java.math.BigDecimal; impo…

Oracle DB运维常用的视图及数据字典

List item 本文介绍一些Oracle DB日常运维最常用到&#xff08;使用频率很高&#xff09;的视图及数据字典 用户有关的常用视图&#xff1a; 1、 查看当前用户的缺省表空间* SQL>select username,default_tablespace from user_users; 2、 查看当前用户的角色 SQL>sele…