问题描述
在使用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}
- 然后重新运行compose文件。
这可能是使用私有注册表时的一个bug,或者可能是由于磁盘空间不足而无法拉取镜像。
方案2
如果方案1无效,可以尝试使用其他工具来诊断问题。
1. 使用docker events
命令来查看Docker事件日志,以了解是否有任何错误或异常事件发生。
2. 使用docker service inspect
命令来查看服务的详细信息,以了解是否有任何配置问题或错误。
3. 使用docker container inspect
命令来查看容器的详细信息,以了解容器是否正常运行。
4. 使用watch docker service ps serviceNameX
命令来持续监视任务的重新启动情况,以了解是否有任务重新启动的情况。
请注意,方案2是用于诊断问题的工具和命令,可能需要更多的信息和分析才能找到问题的根本原因。
正文完