docker swarm如何找出服务无法启动的原因

时间:2017-07-28 11:53:10

标签: docker-swarm

我经常遇到问题,因为我在具有多个节点的docker swarm上部署的服务无法启动,并且没有生成日志,我可以使用docker service logs {serviceName}

查看

服务无法启动有很多可能的原因,例如

  • 无法从注册表中下载图片
  • 无法实现的限制

我无法找到容器无法启动的原因。我找到了命令docker service ps {serviceName},它列出了一个或多个服务的任务和一条简短的错误消息(如果有错误)。但是,当我尝试使用docker service logs {taskId}(应该显示任务的日志)检查任务时,我得到Error response from daemon: task 3lkgo8t2sn7k not found

任何人都可以帮我收到完整的错误消息,说明服务无法启动的原因吗?

1 个答案:

答案 0 :(得分:60)

我找到了一个方便的解决方案。

docker service ps --no-trunc {serviceName}

将显示下载图像,安装nfs卷等错误。

---------------------- UPDATE

并非所有错误都可以通过上述方式找到。另一个有用的工具是查看docker deamon日志,可以按照stackoverflow中所述的方式完成:

journalctl -u docker.service | tail -n 50 
  

这取决于您的操作系统。以下是几个位置,包含几个操作系统的命令:

     
      
  • Ubuntu(旧的使用暴发户) - /var/log/upstart/docker.log
  •   
  • Ubuntu(新使用systemd) - journalctl -u docker.service
  •   
  • Boot2Docker - /var/log/docker.log
  •   
  • Debian GNU / Linux - /var/log/daemon.log
  •   
  • CentOS - /var/log/daemon.log | grep docker
  •   
  • CoreOS - journalctl -u docker.service
  •   
  • Fedora - journalctl -u docker.service
  •   
  • 红帽企业Linux服务器 - /var/log/messages | grep docker
  •   
  • OpenSuSE - journalctl -u docker.service
  •   
  • OSX - ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/log/d‌​ocker.log
  •   
  • Windows - Get-EventLog -LogName Application -Source Docker -After (Get-Date).AddMinutes(-5) | Sort-Object Time,如上所述   here
  •