docker swarm如何找出服务无法启动的原因
docker swarm how to find out why service can't start
我经常遇到问题,因为我在 docker swarm 上部署的具有多个节点的服务无法启动,并且没有生成我可以使用 docker service logs {serviceName}
[=15= 查看的日志]
服务无法启动的可能原因有很多,例如
- 无法从注册表下载图像
- 无法满足的约束条件
我很难找出容器无法启动的原因。我找到了命令 docker service ps {serviceName}
,它列出了一项或多项服务的任务和一条简短的错误消息(如果有错误)。但是,当我尝试使用 docker service logs {taskId}
检查任务(应该显示任务日志)时,我得到 Error response from daemon: task 3lkgo8t2sn7k not found
.
任何人都可以帮助我获得为什么服务无法启动的完整错误消息吗?
我找到了一个解决问题的便捷方法。
docker service ps --no-trunc {serviceName}
这将显示下载图像、安装 nfs 卷等方面的错误。
--------------------更新
并非所有的错误都可以通过上述方式找到。另一个有用的工具是查看 docker 守护程序日志,可以按照 Whosebug 中解释的以下方式完成:
journalctl -u docker.service | tail -n 50
It depends on your OS. Here are the few locations, with commands for few Operating Systems:
- Ubuntu (old using upstart ) -
/var/log/upstart/docker.log
- Ubuntu (new using 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
- Red Hat Enterprise Linux Server -
/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
, as mentioned
here.
我经常遇到问题,因为我在 docker swarm 上部署的具有多个节点的服务无法启动,并且没有生成我可以使用 docker service logs {serviceName}
[=15= 查看的日志]
服务无法启动的可能原因有很多,例如
- 无法从注册表下载图像
- 无法满足的约束条件
我很难找出容器无法启动的原因。我找到了命令 docker service ps {serviceName}
,它列出了一项或多项服务的任务和一条简短的错误消息(如果有错误)。但是,当我尝试使用 docker service logs {taskId}
检查任务(应该显示任务日志)时,我得到 Error response from daemon: task 3lkgo8t2sn7k not found
.
任何人都可以帮助我获得为什么服务无法启动的完整错误消息吗?
我找到了一个解决问题的便捷方法。
docker service ps --no-trunc {serviceName}
这将显示下载图像、安装 nfs 卷等方面的错误。
--------------------更新
并非所有的错误都可以通过上述方式找到。另一个有用的工具是查看 docker 守护程序日志,可以按照 Whosebug 中解释的以下方式完成:
journalctl -u docker.service | tail -n 50
It depends on your OS. Here are the few locations, with commands for few Operating Systems:
- Ubuntu (old using upstart ) -
/var/log/upstart/docker.log
- Ubuntu (new using 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
- Red Hat Enterprise Linux Server -
/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
, as mentioned here.