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

her*_*erm 37 docker-swarm

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

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

  • 无法从注册表下载图像
  • 无法实现的约束

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

任何人都可以帮我收到完整的错误消息,为什么服务无法启动?

her*_*erm 82

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

docker service ps --no-trunc {serviceName}
Run Code Online (Sandbox Code Playgroud)

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

----------------------更新

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

journalctl -u docker.service | tail -n 50 
Run Code Online (Sandbox Code Playgroud)

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

  • 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
  • 视窗- Get-EventLog -LogName Application -Source Docker -After (Get-Date).AddMinutes(-5) | Sort-Object Time,提到 这里.

  • 需要有一种更简单的方法来通过 Swarm 获取这些信息。这实在是太神秘了。 (18认同)