【问题标题】:docker swarm how to find out why service can't startdocker swarm 如何找出服务无法启动的原因
【发布时间】:2018-01-04 11:38:53
【问题描述】:

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

服务无法启动的原因有很多,比如

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

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

谁能帮我获取完整的错误消息,为什么服务无法启动?

【问题讨论】:

    标签: docker-swarm


    【解决方案1】:

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

    docker service ps --no-trunc {serviceName}
    

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

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

    并非所有错误都可以通过上述方式找到。另一个有用的工具是查看 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.

    【讨论】:

    • 需要有一种更简单的方法来使用 Swarm 获取这些信息。这太神秘了。
    • 所以基本上没有办法确保(例如在 CI/CD 管道中)部署了堆栈。
    • stackoverflow.com/a/47206690/7683711 您可以尝试构建类似于 docker swarm 链接中描述的内容......
    猜你喜欢
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多