1. ホーム
  2. docker-swarm

docker swarm サービスが開始できない原因を突き止める方法

2023-11-23 17:12:43

質問

docker swarmに複数ノードでデプロイしたサービスが起動せず、ログも生成されないので、よく docker service logs {serviceName}

サービスが起動しない原因としては、以下のようなことが考えられます。

  • レジストリから画像をダウンロードできない
  • 満たすことができない制約事項

コンテナが起動しない理由を見つけるのに苦労しています。私はコマンドを見つけました docker service ps {serviceName} というコマンドを見つけました。これは、1 つまたは複数のサービスのタスクと短いエラーメッセージ (エラーがあった場合) をリストアップします。しかし、私がタスクを検査しようとすると docker service logs {taskId} (これはタスクのログを表示するはずです) でタスクを検査しようとすると、次のようになります。 Error response from daemon: task 3lkgo8t2sn7k not found .

どなたか、サービスが開始しない理由となる完全なエラーメッセージを得るのを助けていただけませんか?

どのように解決するのですか?

便利な解決方法を一つ見つけました。

docker service ps --no-trunc {serviceName}

は、画像のダウンロードやnfsボリュームのマウントなどのエラーを表示します。

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

すべてのエラーが上記の方法で見つかるわけではありません。もう一つの有用な方法は、docker deamonのログを見ることです。 スタックオーバーフロー :

journalctl -u docker.service | tail -n 50 

それはあなたのOSに依存します。以下は、いくつかのオペレーティングシステム用のコマンドのある場所です。

  • Ubuntu (アップスタートを使用した古いもの) - - 0 /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
  • フェドラ journalctl -u docker.service
  • レッドハット・エンタープライズ・リナックス・サーバ - /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
  • ウィンドウズ Get-EventLog -LogName Application -Source Docker -After (Get-Date).AddMinutes(-5) | Sort-Object Time というように ここで .