web-dev-qa-db-ja.com

Dockerコンテナのログを表示する方法

Dockerコンテナを作成した簡単なコードがあり、ステータスはそれが正常に実行されていることを示しています。コード内では、いくつかのprint()コマンドを使用してデータを印刷しました。印刷コマンドの出力を見たいと思いました。

このために、私はdockerログを見ました。ただし、ログが表示されないため、機能していないようです。ログを確認する方法は?

 $ Sudo docker ps
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS                                            NAMES
a3b3fd261b94        myfirstdocker                     "python3 ./my_script…"   22 minutes ago      Up 22 minutes                                                        elegant_darwin

 $ Sudo docker logs a3b3fd261b94
 <shows nothing>
11
S Andrew

ログをstdoutに出力する必要がある最初のポイント。

Dockerログを確認するには、次のコマンドを使用します。

docker logs --help

Usage:  docker logs [OPTIONS] CONTAINER

Fetch the logs of a container

Options:
      --details        Show extra details provided to logs
  -f, --follow         Follow log output
      --help           Print usage
      --since string   Show logs since timestamp
      --tail string    Number of lines to show from the end of the logs (default "all")
  -t, --timestamps     Show timestamps

いくつかの例:

docker logs --since=1h <container_id>
16
Nickolay

想定される出力がそれほど多くない場合(たとえば、スクリプトが数バイトだけを印刷しようとする場合)、pythonがバッファリングしていると思われます。

出力にさらにデータを追加して、バッファーがフラッシュされることを確認し、PYTHONUNBUFFERED = 1を使用してみてください(ただし、この設定に関係なく、python3はまだバッファリングを行う場合があります)。

0
Hleb Rubanau