Dockerコンテナ内でサーバーを運用しているときにロギングについて困ったことがあったので備忘録を残しておく。
docker logsで大量のログが流れて最新になかなかたどり着かない
末端の指定行だけを表示するようにする。--tail=xxx
で行数を指定する
> docker logs --tail=1000 {container-name}
ログを縮小する
ファイルを削除するのではなく、縮小。コンテナが稼働中の場合は、ファイルを削除するよりも良さそう。まずログがどこに出力されているのかを特定する。
> docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------
appserv docker-entrypoint.sh npm start Up 0.0.0.0:8080->8080/tcp
mongo docker-entrypoint.sh mongod Up 27017/tcp
> docker inspect appserv | grep log
"LogPath": "/var/lib/docker/containers/b52f039313dcfd43f41f87c16f32d72aa001e9b3b97f818e093f61af98b26113/b52f039313dcfd43f41f87c16f32d72aa001e9b3b97f818e093f61af98b26113-json.log",
ホスト上の上記の場所にログが出力されていることがわかる。管理者権限を使ってファイルサイズを減らす。
> sudo ls -l /var/lib/docker/containers/b52f039313dcfd43f41f87c16f32d72aa001e9b3b97f818e093f61af98b26113/b52f039313dcfd43f41f87c16f32d72aa001e9b3b97f818e093f61af98b26113-json.log
-rw-r----- 1 root root 120620456 5月 13 23:20 /var/lib/docker/containers/b52f039313dcfd43f41f87c16f32d72aa001e9b3b97f818e093f61af98b26113/b52f039313dcfd43f41f87c16f32d72aa001e9b3b97f818e093f61af98b26113-json.log
> sudo truncate -s 0 /var/lib/docker/containers/b52f039313dcfd43f41f87c16f32d72aa001e9b3b97f818e093f61af98b26113/b52f039313dcfd43f41f87c16f32d72aa001e9b3b97f818e093f61af98b26113-json.log