web-dev-qa-db-ja.com

ドッカーは、サービスが開始できない理由を見つける方法を群がります

複数のノードを持つdocker swarmにデプロイしたサービスが開始されず、docker service logs {serviceName}で確認できるログが生成されないため、しばしば問題が発生します。

サービスが開始しない理由としては、多くの可能性があります。

  • レジストリから画像をダウンロードできません
  • 満たされない制約

コンテナが起動しない理由を見つけるのに苦労しています。 1つ以上のサービスのタスクと短いエラーメッセージ(エラーがあった場合)を一覧表示するコマンドdocker service ps {serviceName}を見つけました。ただし、docker service logs {taskId}(タスクのログを表示する必要がある)でタスクを検査しようとすると、Error response from daemon: task 3lkgo8t2sn7k not foundが返されます。

誰でもサービスが開始しない理由の完全なエラーメッセージを手伝うことができますか?

29
herm

この問題に対する便利な解決策を見つけました。

_docker service ps --no-trunc {serviceName}
_

イメージのダウンロード、nfsボリュームのマウントなどでエラーが表示されます。

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

上記の方法ですべてのエラーを検出できるわけではありません。別の便利なツールは、 stackoverflow で説明されているように、次の方法で実行できるdockerデーモンログを確認することです。

_journalctl -u docker.service | tail -n 50 
_

OSに依存します。ここにいくつかの場所があり、いくつかのオペレーティングシステム用のコマンドがあります。

  • Ubuntu(古いupstartを使用)-_/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_
  • 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/d‌​ocker.log_
  • Windows-Get-EventLog -LogName Application -Source Docker -After (Get-Date).AddMinutes(-5) | Sort-Object Time、前述のように here
73
herm