Docker swarm replica无法启动,服务状态为new

91次阅读
没有评论

问题描述

在使用Docker swarm时,遇到了一个问题。他创建了一个新的服务,但是replica始终保持在0/1,而且服务状态显示为new。
用户使用以下命令创建了新的服务:

docker-compose config | docker stack deploy -c - serviceNameX --with-registry-auth

用户提供了以下docker-compose文件:

version: '3.1'
services:
  serviceNameX:
    image: ${DOCKER_REGISTRY}imageNameX:${VERSION}
    deploy:
      resources:
        limits:
          memory: 2gb
    env_file:
      - ../common.env
      - .env
networks:
  default:
    external:
      name: ${DOCKER_NETWORK}

用户还提供了以下命令的输出:

docker service ps serviceNameX
ID                  NAME                              IMAGE                                                         NODE                DESIRED STATE       CURRENT STATE       ERROR               PORTS
ify7vhl0l2m8        serviceNameX.1   nexus.local/imageNameX:1                                                                           Running             New 2 hours ago
docker service ls
afnjo97f6nuf        serviceNameX                      replicated          0/1                 nexus.local/imageNameX:1

用户表示所有节点都处于Ready和Active状态,并没有显示任何错误信息。通常,docker service ps命令会显示错误信息。用户想知道是否还有其他有用的日志可以查看。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

尝试手动拉取镜像并重新运行compose文件。
1. 执行以下命令手动拉取镜像:

docker pull ${DOCKER_REGISTRY}imageNameX:${VERSION}
  1. 然后重新运行compose文件。
    这可能是使用私有注册表时的一个bug,或者可能是由于磁盘空间不足而无法拉取镜像。

方案2

如果方案1无效,可以尝试使用其他工具来诊断问题。
1. 使用docker events命令来查看Docker事件日志,以了解是否有任何错误或异常事件发生。
2. 使用docker service inspect命令来查看服务的详细信息,以了解是否有任何配置问题或错误。
3. 使用docker container inspect命令来查看容器的详细信息,以了解容器是否正常运行。
4. 使用watch docker service ps serviceNameX命令来持续监视任务的重新启动情况,以了解是否有任务重新启动的情况。
请注意,方案2是用于诊断问题的工具和命令,可能需要更多的信息和分析才能找到问题的根本原因。

正文完