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

Docker Compose使用私有Registry镜像启动容器循环重启问题求助

Docker Compose启动私有Registry镜像循环重启问题排查解决

问题场景

我通过Docker搭建了私有Registry,将自定义Debian镜像推送至该Registry。登录后执行docker run -it --name TEST registry.domain.com/debian:2 /bin/bash可正常启动容器,但使用Docker Compose(试过2.1和3版本)启动时,容器陷入循环重启(状态显示Restarting (0) 4 seconds ago),且docker logs TEST无日志输出。

Compose配置如下:

version: "2.1"
services:
    TEST:
        container_name: TEST
        image: registry.domain.com/debian:2
        #environment:
        volumes:
            - ./config:/media/nextcloud
        ports:
            - 80:80
        restart: unless-stopped

排查&解决步骤

  • 核心原因:docker run命令里指定了/bin/bash作为启动命令,加上-it参数保持交互式运行,容器能持续存活;但Compose配置未指定启动命令,容器会使用镜像默认的CMD/ENTRYPOINT,而你的自定义Debian镜像默认启动命令执行后直接退出,配合restart: unless-stopped就触发了循环重启。

  • 解决方法:

    1. 让Compose和docker run的启动逻辑保持一致,添加对应命令和终端配置:
      version: "2.1"
      services:
          TEST:
              container_name: TEST
              image: registry.domain.com/debian:2
              #environment:
              volumes:
                  - ./config:/media/nextcloud
              ports:
                  - 80:80
              restart: unless-stopped
              command: /bin/bash
              tty: true  # 对应docker run的-t参数,启用终端
              stdin_open: true  # 对应docker run的-i参数,保持标准输入打开
      
    2. 若不需要交互式终端,仅需容器保持运行,可改用持续运行的命令替代/bin/bash,同时可去掉tty和stdin_open配置:
      command: tail -f /dev/null
      
  • 额外排查点:

    • 检查本地./config目录的权限,避免容器启动时因权限不足退出(当前日志为空,该可能性较低,但可辅助排查)。
    • 执行docker pull registry.domain.com/debian:2,确认私有Registry的镜像能正常拉取、本地镜像完整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 02:52:11