我经常遇到问题,因为我在具有多个节点的docker swarm上部署的服务无法启动,并且没有生成日志,我可以使用docker service logs {serviceName}
服务无法启动有很多可能的原因,例如
我无法找到容器无法启动的原因。我找到了命令docker service ps {serviceName}
,它列出了一个或多个服务的任务和一条简短的错误消息(如果有错误)。但是,当我尝试使用docker service logs {taskId}
(应该显示任务的日志)检查任务时,我得到Error response from daemon: task 3lkgo8t2sn7k not found
。
任何人都可以帮我收到完整的错误消息,说明服务无法启动的原因吗?
答案 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/docker.log
- Windows -
Get-EventLog -LogName Application -Source Docker -After (Get-Date).AddMinutes(-5) | Sort-Object Time
,如上所述 here。