複数のノードを持つdocker swarmにデプロイしたサービスが開始されず、docker service logs {serviceName}
で確認できるログが生成されないため、しばしば問題が発生します。
サービスが開始しない理由としては、多くの可能性があります。
コンテナが起動しない理由を見つけるのに苦労しています。 1つ以上のサービスのタスクと短いエラーメッセージ(エラーがあった場合)を一覧表示するコマンドdocker service ps {serviceName}
を見つけました。ただし、docker service logs {taskId}
(タスクのログを表示する必要がある)でタスクを検査しようとすると、Error response from daemon: task 3lkgo8t2sn7k not found
が返されます。
誰でもサービスが開始しない理由の完全なエラーメッセージを手伝うことができますか?
この問題に対する便利な解決策を見つけました。
_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/docker.log
_- Windows-
Get-EventLog -LogName Application -Source Docker -After (Get-Date).AddMinutes(-5) | Sort-Object Time
、前述のように here 。