首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Docker到主机的TCP连接在5分钟后断开

Docker是一种开源的容器化平台,它可以将应用程序及其依赖项打包成一个独立的容器,使其可以在不同的环境中进行部署和运行。Docker的主机与容器之间通过TCP连接进行通信,但有时候这些连接会在5分钟后断开。

这个问题涉及到Docker容器与主机之间的网络通信机制。在Docker中,每个容器都有自己的网络命名空间,它们与主机之间通过网络接口进行通信。默认情况下,Docker会为每个容器创建一个虚拟的网络接口,并将其与主机的网络接口进行桥接。

然而,由于默认的网络设置,Docker容器与主机之间的TCP连接在一段时间后会自动断开。这是因为Linux内核默认会在一定时间内关闭处于空闲状态的TCP连接,以释放系统资源。这个时间通常为2小时,但在某些情况下可能会更短。

为了解决这个问题,可以通过修改主机的TCP keepalive参数来延长TCP连接的超时时间。可以使用以下命令来修改参数:

代码语言:txt
复制
sudo sysctl -w net.ipv4.tcp_keepalive_time=600
sudo sysctl -w net.ipv4.tcp_keepalive_intvl=60
sudo sysctl -w net.ipv4.tcp_keepalive_probes=10

上述命令将TCP keepalive的超时时间设置为10分钟,间隔时间设置为1分钟,尝试次数设置为10次。这样可以确保TCP连接在5分钟后不会断开。

另外,如果需要在Docker容器中保持长时间的TCP连接,还可以考虑使用一些工具或技术来维持连接的活跃状态,例如使用心跳机制或者在应用程序中定期发送数据包来保持连接。

总结起来,Docker容器到主机的TCP连接在5分钟后断开是由于Linux内核默认的TCP连接超时机制导致的。可以通过修改主机的TCP keepalive参数来延长超时时间,或者使用其他技术手段来保持连接的活跃状态。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Docker 入门实战教程(四)容器链接

:containerPort 1.2.1 绑定宿主机所有的IP 使用hostPort:containerPort格式进行宿主机及容器端口映射时,默认会将宿主机所有IP绑定容器。...在这种情况下,会绑定本地所有接口上所有IP地址 1.2.2 映射到指定地址指定端口 使用ip:hostPort:containerPort格式可以将宿主机指定IP及端口,绑定容器端口。...容器链接(Link) 端口映射并不是唯一把 docker 连接到另一个容器方法。 docker 有一个连接系统允许将多个容器连接在一起,共享连接信息。...web3与网络test-net断开了连接。...网络不在需要,可以使用docker network rm命令将网络删除: docker network rm test-net 注意:删除网络时,需要已断开所容器连接,否则会删除失败。

1.8K10

select语句执行流程

# 连接mysql mysql -h 127.0.0.1 -P 3306 -u root 客户端首先和连接器通过TCP握手建立连接 对用户输入用户名和密码进行验证 验证失败会返回ERROR 1045...连接在建立,如果客户端太长时间没有活动,连接器会自动将它断开,该时间由wait_timeout和interactive_timeout参数控制,默认都是8小时。...连接在断开以后,客户端再次发送请求的话,会收到以下响应: ERROR 4031 (HY000): The client was disconnected by the server because of...定时断开长连接:使用一段时间或者程序判断执行一个占用内存大查询断开连接,之后再重 mysql_reset_connection:在每次执行较大操作,执行mysql_reset_connection...该过程不需要重,只是将连接恢复刚创建完时状态。 mysql_reset_connection是为各个编程语言提供API,不是SQL语句。

82030

长连接和心跳那些事儿

,发送几次请求,就主动或者被动断开连接。...但不是任何时候都这么巧,有时就是某段链路瘫痪了,或者主机挂了,系统异常关闭了等。这时候如果应用系统不能感知,是件很危险事情。 长连接怎么保活?...这里应用层心跳举个例子,比如客户端每隔3s通过长连接通道发送一个心跳请求服务端,连续失败5次就断开连接。...设计误区 无心跳 无心跳设计,也是很常见,为了省事,长连接断开TCP传输层有通知,应用程序只要处理这种通知,一旦发现连接异常,就重。...参考方案 方案一 最简单策略当然是客户端定时n秒发送心跳包,服务端收到心跳包,回复客户端心跳,如果客户端连续m秒没有收到心跳包,则主动断开连接,然后重,将正常业务请求暂时不发送该台服务器上

1.4K40

Windows 远程登录 Linux 服务器 docker 容器

环境说明 登录主机操作系统 Win 10 被登录主机操作系统 docker container in Linux 主机与被登录主机(此处指服务器,不是docker)网络联通,IP在同一网段 服务器与docker...,我们就直接使用root用户登录好了,需要设置新建容器密码: passwd root 设置SSH 本地生成ssh key 将.pub 内容复制粘贴加入远程 ~/.ssh/authorized_keys...意思是 断开主机链接了,出现这种问题,跟你IPTABLES,防火墙什么都没关系。...造成这个原 因是因为原来连接到SSHD服务器进程22端口,当你客户端突然断开时,服务器端TCP连接就处于一个半打开状态。...当下一次同一客户机再次建立 TCP连接时,服务器检测到这个半打开TCP连接,并向客户机回传一个置位RSTTCP报文,客户机就会显示connection closed by foreign host。

13.8K20

Docker系列教程15-Docker容器网络

启动两个容器再检查 bridge 网络。...您可以使用遗留 docker run--link 选项将两个容器连接在一起,但在大多数情况下不推荐使用。 您可以 attach 正在运行容器,查看容器内部IP是什么。...创建并安装自定义网络驱动,您可以使用 --driver 标志创建一个使用该驱动网络。...$ docker network create --driver weave mynet 您可以检查该网络、让容器连接或断开该网络,删除该网络。 特定插件为特定需求而生。...您不能在Dockerfile中指定要映射端口,因为无法保证端口在运行image宿主机上可用。 此示例将容器中端口80发布宿主机随机高阶端口(在这种情况下为 32768 )。

1.1K70

安装和使用Redis

bind 127.0.0.1 不过需要注意,绑定所有接口可能会引起安全问题。所以考虑安全问题,最好让Redis只绑定固定几个接口。...端口号 默认端口号是6379,如果需要较高安全性也可以自定义端口号。 port 6379 客户端超时 当客户端在指定时间(单位:秒)内没有任何动作时,Redis就会断开连接。默认是0,表示不断开。...timeout 0 TCP连接存货时间 这个参数指定TCP连接会保持多少秒,默认是300秒。 tcp-keepalive 300 守护模式 指定Redis是否以守护模式运行。...loglevel notice 还可以指定日志文件位置,如果不指定的话,默认会直接在控制台输出日志信息。...如果主机名和端口号都是默认值的话,可以直接输入redis-cli进入交互式界面。如果需要连接到其他主机Redis服务器,可以使用-h参数指定主机名,使用-p参数指定端口号,使用-a参数指定密码。

2K100

网络显形计(实战TCP三次握手)

# 执行抓包并写入文件 tcpdump -i eth0 -nn icmp and host 172.17.0.3 -w icmp.pcap # 在宿主机上执行,将容器内文件拷贝本地 docker...这个主要取决于iptables限制条件: 如果添加是INPUT规则,可以抓取包 如果添加是OUTPUT规则,则无法抓包 原因是: 网络包进入主机顺序为:Wire -> NIC -> tcpdump...我们过一段时间在telnet窗口再输入123456字符,然后再抓一会包,如下图所示: 从上图中可以看出,由于NginxServer上tcp_synack_retries参数被设置为2次,上图中我们可以看出...由于客户端连接还没中断,我们输入123456发送给服务端,但是服务端已经断开连接,客户端数据一直在不停重传(PUSH+ACK报文),那么客户端建立连接重传最大次数是由啥控制呢?...telnet客户端就断开,如下图: 假设客户端一直不发送数据,那么连接什么时候断开

71110

IM二分法智能心跳策略

成功心跳列表,每次心跳成功,会把当前成功心跳记录进来 重置心跳 当TCP连接有除了心跳包以外消息包在进行传输(read)时候,就认为该TCP接在这个时刻仍然有效,在程序中read消息包数据后会对数据进行短时间处理...,那么客户端对于write出去消息会有一个超时检测(20s,但是消息ack没有超时检测),write数据出去收不到响应回馈,20s超时到期,此时会通过心跳来验证TCP连接有效性,心跳超时就进行断线重...closed),这里分为两种情况,第一个是网络切换,那么这时候是网络断开,然后再重新连上一个过程,应用能明显感知这个过程(网络切换广播),TCP接在网络切换时候会被动断开,这时候在下调心跳之前要先检测下本地网络是否可用...此时modem可能在进行重,但是并没有网络切换广播,此时应用层是无感知,但是TCP连接可以立马感知,并被动断开,这时候检测本地网络也是可用(不准),所以这时候会导致心跳误下调,Android sdk...,不应该下调心跳 除了以上6中原因会造成TCP断开,如果还有其他原因在成TCP断开,需要检测三个条件才满足心跳下调条件:第一是当前心跳是否已经启动,第二是当前设备本地网络是否可用,第三是TCP断开前,

1.3K30

面试中经常问到 长连接&短连接,你了解多吗?

短连接:短连接(short connnection)是相对于长连接而言概念,指的是在数据传送过程中,只在需要发送数据时,才去建立一个连接,数据发送完成,则断开此连接,即每次连接只完成一项业务发送。...每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完都不断开,次处理时直接发送数据包就OK了,不用建立TCP连接。...如果一个给定接在两小时内没有任何动作,则服务器就向客户发一个探测报文段,客户主机必须处于以下4个状态之一: 客户主机依然正常运行,并从服务器可达。...客户TCP响应正常,而服务器也知道对方是正常,服务器在两小时将保证定时器复位。 客户主机已经崩溃,并且关闭或者正在重新启动。在任何一种情况下,客户TCP都没有响应。...服务端将不能收到对探测响应,并在75秒超时。服务器总共发送10个这样探测 ,每个间隔75秒。如果服务器没有收到一个响应,它就认为客户主机已经关闭并终止连接。 客户主机崩溃并已经重新启动。

16.9K40

分析 HTTP,TCP 长连接和短连接以及 sock

如果一个给定接在两小时内没有任何动作,则服务器就向客户发一个探测报文段,客户主机必须处于以下 4 个状态之一: 客户主机依然正常运行,并从服务器可达。...客户TCP响应正常,而服务器也知道对方是正常,服务器在两小时将保活定时器复位。 客户主机已经崩溃,并且关闭或者正在重新启动。在任何一种情况下,客户 TCP 都没有响应。...每个 TCP 连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完都不断开,次处理时直接发送数据包就 OK 了,不用建立 TCP 连接。...所以并发量大,但每个用户无需频繁操作情况下需用短好。 6 长连接和短连接生命周期有多久? 短连接在建立连接,完成一次读写就会自动关闭了。...上层程序在非正常断开情况下是可以正常发送包缓冲区。非正常端开情况是指服务器没有收到"FIN" 或者 "RST"包。 end

4.4K21

WebSocket :用WebSocket实现推送你必须考虑几个问题

对于ws来讲直接在外部断开TCP会触发ws异常,对于ws来讲这样关闭方式为非优雅关闭会触发异常....session已经断开时不要忘记通知ws close掉这个session,不然有可能出现大量服务端TCP假死.接下来说重,大家要注意重对于server是来讲是一个新连接,大家可以通过断网重server...和onClose方法,对于原session server在client断开从来不给这个client发消息情况也就是重情况,我们要在新session产生时及时清掉旧session.同TCP假死处理一致...其实上边已经提到了server网络断开情况,分别说明了server和client各自检测办法.但是很多网络不稳定情况,如:断开18分钟网络又恢复了,这里涉及一个重机制,首先大家要明白当中间网络断开时实际上是两段各自维护本端...综上:tcp是需要时间,这个时间肯定是越短越好,但是又不能太短,这个时间的确定大家可以参考本篇最后测试. 7.如何做到支持几千个client同时在线人数 首先tomcat最大线程数默认肯定不了几千

1.5K20

Docker重学系列之高级网络篇

;所以启动,不但容器里面会有一个网卡,宿主机也有有一个网卡用来专门绑定容器用;所以它们网卡是一对一对出现, 这就是veth-pair技术; ---- 网络小结 默认docker在创建容器时将所有容器都连接到...---- 访问所有端口 当启动 Docker 服务(即 dockerd)时候,默认会添加一条转发策略本地主机 iptables FORWARD 链上。...tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 to:172.17.0.2:80 注意: 这里规则映射了 0.0.0.0,意味着将接受主机来自所有接口流量...如果希望永久绑定某个固定 IP 地址,可以在 Docker 配置文件 /etc/docker/daemon.json 中添加如下内容。...-d --network 网络名称 2.启动之后容器加入某个网络中 docker network connect 网络名 容器id(name) 断开容器网络 (容器必须是运行状态才能断开连接)

1.1K40

最后防线:Linux主机入侵外行为检测

主机入侵检测系统系列:这一篇讲述检测外行为原理和技术,可统一检测宿主机docker子机 一台主机入侵,入侵者往往会把数据发送出去或启动reverse shell。...一般在IDC出口防火墙都会有检测异常外行为,可能由于中间有NAT,并不一定知道是哪台机器过来,但即使是知道哪台机器过来,也不知道是该台机器哪个程序发起行为。...)实现,就不可能调用命令,原因如下: 有些Linux机器可能没有安装netstat命令 即使有netstat命令,也可能由于之前操作,导致netstat运行时依赖so库缺失或符号缺失,导致无法执行这个命令...netstat命令执行有异常,变成僵尸进程 netstat命令在宿主机是没办法查到docker行为 按照Unix哲学,一切皆文件,像端口和进程信息这些内容都可以从/proc文件系统下找到...下面拿上面命令结果2109/node来做例子展示这种手段。 更多内容请关注个人公众号“debugeeker", 链接为最后防线:Linux主机入侵外行为检测

1K10

Docker环境下如何使用TensorBoard

Docker使用容器创建虚拟环境,将TensorFlow安装与系统其余部分隔离开来。TensorFlow程序在虚拟环境中运行,但与主机共享资源(访问目录、使用 GPU、连接到互联网等)。...2、将Docker容器端口号映射到本地主机 通常使用Docker Run命令 -p 参数将Docker容器内端口号映射到本地主机。...缺省情况下,TensorBoard使用6006端口,所以我们将容器6006端口映射到主机6006端口。..., 8888/tcp naughty_wilson 另启一个Terminal,启动TensorBoard docker exec -it 05ee0d5a5a0e tensorboard --logdir...在宿主机打开浏览器,查看效果 在浏览器中输入:http://127.0.0.1:6006 或者 localhost:6006, 却得到如下页面: 断断续续在网上找了不少方法,最后找到解决方案,将宿主机网络断开才可以正常访问

1.6K10

连接一个 IP 不存在主机时,握手过程是怎样

我们都是TCP正常情况下断开连接是用四次挥手,那是正常时候优雅做法。 但异常情况下,收发双方都不一定正常,连挥手这件事本身都可能做不到,所以就需要一个机制去强行关闭连接。...(炫耀) 进行连接连接,发现与前面两种情况是一致,目的机器在收到我请求,立马就通过 RST标志位 断开了这次连接。 存在局域网外IP,端口不存在抓包 这一点跟前面两种情况一致。...所以很多发到 8080端口消息都在防火墙这一层就被拒绝掉了,根本不了目的主机里,而RST是在目的主机TCP/IP协议栈里发出,都还没到这一层,就更不可能发RST了。...IP 地址存在但端口号不存在主机时 不管目的IP是回环地址还是局域网内外IP地址,目的主机传输层都会在收到握手消息,发现端口不正确,发出RST消息断开连接。...最后留个问题,一个 不存在局域网外IP主机时,我们可以看到TCP重发规律是:开始时,每隔1s重发五次 TCP SYN消息,接着2s,4s,8s,16s,32s都重发一次; 对比一个 不存在局域网内

96710

CocoaAsyncSocket源码解析---终

代理回调关闭状态 如果大家想玩转插座还有两个重要点还是需要掌握 乒乓机制 重 简单来说,心跳就是用来检测TCP连接双方是否可用。...这个时候心跳机制就起到作用了: 我们客户端发起心跳平(一般都是客户端),假如设置在10秒如果没有收到回调,那么说明服务器或者客户端某一方出现问题,这时候我们需要主动断开连接。...服务端也是一样,会维护一个插座心跳间隔,当约定时间内,没有收到客户端发来心跳,我们会知道该连接已经失效,然后主动断开连接。 参考文章:为什么说基于TCP移动端IM仍然需要心跳保活?...我们每次可以在发送消息成功,调用这个超时读取方法,如果一段时间没收到服务器响应,那么说明连接不可用,断开则Scoket连接 最后就是重机制: 理论上,自己我们去主动断开Scoket连接(例如退出账号...其他连接断开,我们都需要进行断线重。一般解决方案是尝试重几次,如果仍旧无法重连成功,那么不再进行重。 CocoaAsyncSocket源码解析过程,还是收货颇丰

51430

连接一个 IP 不存在主机时,握手过程是怎样

我们都是TCP正常情况下断开连接是用四次挥手,那是正常时候优雅做法。 但异常情况下,收发双方都不一定正常,连挥手这件事本身都可能做不到,所以就需要一个机制去强行关闭连接。...(炫耀) 进行连接连接,发现与前面两种情况是一致,目的机器在收到我请求,立马就通过 RST标志位 断开了这次连接。 ? 存在局域网外IP,端口不存在抓包 这一点跟前面两种情况一致。...所以很多发到 8080端口消息都在防火墙这一层就被拒绝掉了,根本不了目的主机里,而RST是在目的主机TCP/IP协议栈里发出,都还没到这一层,就更不可能发RST了。...IP 地址存在但端口号不存在主机时 不管目的IP是回环地址还是局域网内外IP地址,目的主机传输层都会在收到握手消息,发现端口不正确,发出RST消息断开连接。...最后留个问题,一个 不存在局域网外IP主机时,我们可以看到TCP重发规律是:开始时,每隔1s重发五次 TCP SYN消息,接着2s,4s,8s,16s,32s都重发一次; 对比一个 不存在局域网内

95730

长连接和短连接分析

如果一个给定接在两小时内没有任何动作,则服务器就向客户发一个探测报文段,客户主机必须处于以下4个状态之一: 客户主机依然正常运行,并从服务器可达。...客户TCP响应正常,而服务器也知道对方是正常,服务器在两小时将保活定时器复位。 客户主机已经崩溃,并且关闭或者正在重新启动。在任何一种情况下,客户TCP都没有响应。...解释1 所谓长连接指建立SOCKET连接不管是否使用都保持连接,但安全性较差; 所谓短连接指建立SOCKET连接发送后接收完数据马上断开连接,一般银行都使用短连接 解释2 长连接就是指在基于tcp...短连接是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成,则断开TCP连接,即每次TCP连接只完成一对 CMPP消息发送。      ...每个TCP连接建立都需要三次握手,每个TCP连接断开要四次握手。 如果每次操作都要建立连接然后再操作的话处理速度会降低,所以每次操作,下次操作时直接发送数据就可以了,不用再建立TCP连接。

3.2K90

[性能测试实战30讲」之问题问答整理十八

而虚拟机和docker能不能用于性能测试?当然可以。不管什么环境,都可以用于性能测试。 而现在我们用于应用级别的机器基本上都是虚拟机和docker。这必然是可以用。...TCP 四次挥手中,主动断开链接一方才会处于 TIME_WAIT 状态呢,老师在文中有说 客户端主动断开,服务端也会出现 TIME_WAIT 状态,这是什么情况呢?...思考题 1.如何在分析一通,最后定位防火墙?...TCP 相关参数来达到复用处于 timewait 状态链接(这些参数本质是释放服务端句柄和内存资源,但不能释放端口,而 源IP+源端口+目的IP+目的端口+协议号才是 TCP 五元组),修改完没有解决问题...当服务端探测到客户不在时,只能自己主动断开,故而有timewait出现。 问题2,nf_conntrack表满了会被清理,而tcp会重,这时响应时间会增加,所以tps掉下后会再上升。

59420

计网 - 传输层协议 TCPTCP 为什么握手是 3 次、挥手是 4 次?

文章目录 Pre TCP 协议 主机主机(Host-To-Host) 什么是连接和会话? 双工/单工问题 什么是可靠性?...---- 主机主机(Host-To-Host) TCP 提供是 Host-To-Host 传输,一台主机通过 TCP 发送数据给另一台主机。...TCP 要实现主机主机通信,就需要知道主机网络地址(IP 地址),但是 TCP 不负责实际地址地址(Address-To-Address)传输,因此 TCP 协议把 IP 地址给底层互联网层处理...以上 5 层架构,我们称为互联网协议群,也称作 TCP/IP 协议群。总结下,主机主机(Host-To-Host)为应用提供应用间通信能力。 ? ---- 什么是连接和会话?...如果你们聊一段时间,各自休息了,约定先不要关微信,1 个小时再回来。那么连接会断开,因为聊天窗口没关,所以会话还在。 在有些系统设计中,会话会自动重(也就是重新创建连接),或者帮助创建连接。

46620
领券