You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu系统下Docker Compose容器注销后停止响应求助

问题描述

Ubuntu系统中通过docker compose up -d启动多个配置restart: always的容器(原配置为unless-stopped,修改后问题仍存在)。注销系统数小时后,容器无法响应请求,仅Deluge前端提示无法连接deluged,其余容器日志无异常,Docker外的服务运行正常。

附docker-compose.yml配置:

services:
 radarr:
  container_name: radarr
  restart: always
  ports:
   - 7878:7878
  volumes:
    - ~/docker/servarr/radarr/config:/config
    - ~/media:/media
    - ~/downloads:/downloads
  environment:
   - PUID=1000
   - PGID=1000
   - TZ=America/New_York
  image: linuxserver/radarr

 sonarr:
  container_name: sonarr
  ports:
   - 8989:8989
  volumes:
    - ~/docker/servarr/sonarr/config:/config
    - ~/media:/media
    - ~/downloads:/downloads
  environment:
   - PUID=1000
   - PGID=1000
   - TZ=America/New_York
  image: linuxserver/sonarr
  restart: always

 deluge:
  image: lscr.io/linuxserver/deluge:latest
  container_name: deluge
  environment:
   - PUID=1000
   - PGID=1000
   - TZ=Etc/UTC
   - DELUGE_LOGLEVEL=error
  volumes:
   - ~/docker/servarr/deluge/config:/config
   - ~/downloads:/downloads
  ports:
   - 8112:8112
   - 6881:6881
   - 6881:6881/udp
   - 58846:58846
  restart: always

 flaresolverr:
  image: ghcr.io/flaresolverr/flaresolverr:latest
  container_name: flaresolverr
  environment:
   - LOG_LEVEL=${LOG_LEVEL:-info}
   - LOG_HTML=${LOG_HTML:-false}
   - CAPTCHA_SOLVER=${CAPTCHA_SOLVER:-none}
   - TZ=Europe/London
  ports:
   - 8191:8191
  volumes:
   - ~/docker/flaresolverr/config:/config
  restart: always

 prowlarr:
  container_name: prowlarr
  image: cr.hotio.dev/hotio/prowlarr
  ports:
   - 9696:9696
  environment:
   - PUID=1000
   - PGID=1000
   - UMASK=002
   - TZ=Etc/UTC
  volumes:
   - ~/docker/prowlarr/config:/config
  restart: always

 mylar3:
  image: lscr.io/linuxserver/mylar3:latest
  container_name: mylar3
  environment:
   - PUID=1000
   - PGID=1000
   - TZ=Etc/UTC
  volumes:
   - ~/docker/mylar/config:/config
   - ~/media:/media #optional
   - ~/downloads:/downloads
  ports:
   - 8090:8090
  restart: always

 sabnzbd:
  image: lscr.io/linuxserver/sabnzbd:latest
  container_name: sabnzbd
  environment:
   - PUID=1000
   - PGID=1000
   - TZ=Etc/UTC
  volumes:
   - ~/docker/servarr/sabnzb:/config
   - ~/downloads:/downloads
  ports:
   - 8080:8080
  restart: always
排查与解决步骤

1. 确认容器运行状态

  • 执行docker ps查看容器是否处于Up状态,排查是否存在假死或退出情况
  • 针对Deluge,执行docker top deluge查看容器内deluged进程是否存在;对其他容器也可执行同样命令确认进程状态
  • 尝试手动重启单个容器:docker restart deluge,验证是否能恢复响应,判断是单容器问题还是全局问题

2. 排查系统资源与电源管理

  • 检查内存不足导致的进程被杀:执行dmesg | grep -i oom,查看是否有OOM Killer日志(内存耗尽时系统会自动终止进程)
  • 禁用Ubuntu自动休眠/挂起功能(服务器版建议默认关闭),避免注销后系统进入低功耗状态切断容器资源

3. 检查Docker守护进程状态

  • 执行systemctl status docker确认Docker服务是否正常运行;若服务异常,设置开机自启并重启:systemctl enable --now docker
  • 查看Docker守护进程日志:journalctl -u docker.service -f,排查注销后是否有异常报错

4. 验证挂载卷权限与配置

  • 检查挂载目录权限:执行ls -ld ~/downloads ~/media,确保目录所属UID/GID为1000(与容器内PUID/PGID一致),权限异常会导致容器进程无法读写挂起
  • 检查Deluge配置目录:查看~/docker/servarr/deluge/config/deluged.pid文件中的PID是否与容器内进程一致,若进程异常退出但容器未检测到,会导致假死

5. 网络连通性排查

  • 执行docker network inspect bridge查看容器网络配置是否正常
  • 在容器内测试网络:docker exec deluge ping 8.8.8.8,确认容器网络连通性
  • 检查端口占用:ss -tulpn | grep 8112,确保Deluge端口未被其他进程抢占

6. 增强容器健康检测

给Deluge添加健康检查,让Docker自动检测容器状态并重启,修改docker-compose.yml中Deluge配置:

deluge:
  # 保留原有配置
  healthcheck:
    test: ["CMD", "curl", "-f", "http://localhost:8112"]
    interval: 30s
    timeout: 10s
    retries: 3
    start_period: 60s

其他容器也可参考添加类似健康检查,确保Docker能及时发现异常并重启

内容的提问来源于stack exchange,提问作者devilsansclue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 07:25:54