关于labs.play-with-docker.com执行docker-compose后会话超时的咨询
问题描述
在浏览器中使用在线实验环境启动容器后,执行docker-compose up -d启动ZooKeeper集群(compose配置如下),约1分钟后会自动断开连接,切换网络也无法解决;但不启动该compose文件时无此问题,网络切换也正常。
对应的docker-compose.yml内容:
version: '3.8' services: zoo1: image: zookeeper:3.6.3 hostname: zoo1 container_name: zoo1 ports: - "2181:2181" environment: ZOO_MY_ID: 1 ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 zoo2: image: zookeeper:3.6.3 hostname: zoo2 container_name: zoo2 ports: - "2182:2181" environment: ZOO_MY_ID: 2 ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 zoo3: image: zookeeper:3.6.3 hostname: zoo3 container_name: zoo3 ports: - "2183:2181" environment: ZOO_MY_ID: 3 ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
可能原因及解决办法
1. 在线实验环境资源限制触发自动回收
该在线环境对单实例的CPU、内存等资源有严格阈值,启动3个ZooKeeper节点后资源占用超标,会被系统自动终止连接或回收实例。
- 调整节点数量测试:暂时只保留1个ZooKeeper节点,修改compose文件后重新执行
docker-compose up -d,验证是否还会断连。 - 添加容器资源限制:在每个ZooKeeper服务下增加资源限制配置,避免占用过多资源:
deploy: resources: limits: cpus: '0.5' memory: 512M - 查看资源占用:执行
docker stats命令,确认容器的CPU、内存使用率是否超出环境承受范围。
2. ZooKeeper集群初始化网络峰值触发限制
3个节点同时启动时会进行选举、数据同步,短时间内产生大量网络流量,可能触发环境的网络安全策略导致连接断开。
- 逐个启动节点:先启动
zoo1:docker-compose up -d zoo1,等待10秒后启动zoo2,最后启动zoo3,分散网络压力。 - 检查集群初始化日志:执行
docker logs zoo1、docker logs zoo2查看节点日志,确认是否有选举失败、节点间连接超时等错误,排查集群配置问题。
3. 会话闲置超时
若容器启动后无持续交互操作,可能被环境判定为闲置而断开连接。可以在启动容器后,每隔几秒执行docker ps等命令保持会话活跃。
内容的提问来源于stack exchange,提问作者user14019518
相关产品推荐
相关产品推荐

