docker service logs 不显示日志

docker swarm 最近出现了一个很有意思的问题, 具体问题如下:

docker logs 正常输出日志, docker service logs 为空, 无法正常输出日志
 

问题:
  docker swarm 调度程序停止了 或 无法协调其他机器 导致日志无法正常输出

解决方案:
  1: 通过管理节点降级, 将管理节点降级成工作节点, 降级完成也可以将工作节点在提升至管理节点
      降级为工作节点 docker node demote 节点名称或id
      提升为管理节点 docker node promote 节点名称或id


  2: 移除当前管理节点中的Leader, 迫使docker重新选取Leader
      在需要移除的节点上执行  docker swarm leave, 也可以强制移除 docker swarm leave --force
  如果这时出现了超时的情况, 则可以在当前管理节点中的Leader节点上执行 docker node rm [worker_node], 这时该节点已经被移除了集群, 如果没有其他问题运行docker service logs 可以正常输出日志。


  如果需要将移除的节点重新加入到集群, 可以在Leader机器上运行docker swarm join-token manager 查看当前集群 swarm join token, 这时会返回当前集群的加入命令以及token, 可以在需要的服务器上执行返回的命令加入到集群中

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果您已经启动了 Docker Swarm 服务并且服务正在运行,但是无法通过主机上的端口访问该服务,则可能存在以下几种情况: 1. 端口映射不正确:请确保在创建服务时正确映射了容器内的端口到主机上的端口。您可以使用以下命令检查服务的端口映射: ``` docker service inspect <service_name> --pretty ``` 其中 `<service_name>` 是您要检查的服务的名称。此命令将显示服务的详细信息,包括端口映射设置。 2. 防火墙设置:如果您正在运行防火墙,则可能需要开放服务所使用的端口。您可以尝试检查您的防火墙设置,以确保服务端口未被阻止。 3. 服务的网络配置:如果服务使用自定义网络,则可能需要检查该网络的配置。您可以使用以下命令检查服务的网络配置: ``` docker network inspect <network_name> --pretty ``` 其中 `<network_name>` 是服务所使用的网络的名称。该命令将显示网络的详细信息,包括网络的子网和网关设置。 4. Docker Swarm节点的状态:如果 Docker Swarm 集群中的某个节点处于非活动状态或已断开连接,则可能会导致服务无法访问。您可以使用以下命令检查 Swarm 节点的状态: ``` docker node ls ``` 该命令将显示 Swarm 集群中的所有节点及其状态。 如果您无法确定问题的原因,请尝试查看 Docker Swarm 服务的日志。您可以使用以下命令查看服务的日志: ``` docker service logs <service_name> ``` 其中 `<service_name>` 是您要查看日志的服务的名称。该命令将显示服务的日志输出,以帮助您确定问题的原因。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值