docker
logrotate

Dockerコンテナのログをローテートする

More than 3 years have passed since last update.


コンテナログのrotateについて

コンテナを実際の環境で運用しようと思うと、各種ログをローカルに保存する必要があります。

しかし、そのままにしておくとログが肥大化してしまいますのでlogrotateが必要です。

参考にしたページ


環境


  • rhel 7.1

  • docker 1.6.2


手順


  • 格納先を作成する

mkdir /var/log/docker/rhel1

 


  • logrotateを実装する

vi /etc/logrotate.d/docker-container


/etc/logrotate.d/docker-container

#設定は好みで変えて下さい

/var/log/docker/*/* {
rotate 7
daily
compress
size=1M
missingok
delaycompress
copytruncate
}

 


  • コンテナを起動する

private resistryから取得しているため、

環境によってimageの取得先を変えて下さい

docker run -it  --name=rhel1 -v /var/log/rhel1:/var/log/ localhost:5000/library/rhel:latest /bin/bash

 


  • ログ生成

echo aaa > /var/log/messages

 


  • Ctrl+p+qでコンテナを抜ける


以降はテスト


  • ローテートの手動実行

logrotate -fv /etc/logrotate.d/docker-container

 


  • ログ確認

ls /var/log/docker/rhel1/

messages messages.1


概要説明

コンテナからOS上のディスクをボリュームマウント(-vオプション)して、ログをローカルに吐き出しています。これをlogrotateの対象とすることでローテートを実現しています。

logrotateの実行タイミングはどういじればいいの?という方は、こちらにまとめた記事がありましたのでご覧ください。