web-dev-qa-db-ja.com

Dockerコンテナログがすべてのディスク領域を占有

VMでコンテナを実行しています。コンテナーは、ディスクがいっぱいになるまで、デフォルトでログを/var/lib/docker/containers/CONTAINER_ID/CONTAINER_ID-json.logファイルに書き込みます。

現在、ディスクがいっぱいになるのを避けるために、このファイルを手動で削除する必要があります。 Docker 1.8では、 ログを回転させる のパラメーターがあることを読みました。現在の回避策として何をお勧めしますか?

61
poiuytrez

ログローテーションオプションを備えたDocker 1.8がリリースされました。追加:

--log-opt max-size=50m 

コンテナが起動すると、トリックが行われます。詳細については、 https://docs.docker.com/engine/admin/logging/overview/ をご覧ください。

73
poiuytrez

注意:これはdocker-composeバージョン2専用です

例:

version: '2'
services:
  db:
    container_name: db
    image: mysql:5.7
    ports:
      - 3306:3306
    logging:
      options:
        max-size: 50m
30
jaks

注意:この投稿は、ドッカーバージョン<1.8(--log-optオプションを持たない)に関連しています

なぜlogrotate(圧縮もサポートしています)を使用しないのですか?

/var/lib/docker/containers/*/*-json.log {
hourly
rotate 48
compress
dateext
copytruncate
}

CoreOs Nodeで直接設定するか、/ var/lib/dockerをマウントしてコンテナーを展開します(例 https://github.com/tutumcloud/logrotate )。ログ。

7
gtonic

コンテナの実行中にログオプションを渡します。例は次のようになります

Sudo docker run -ti --name visruth-cv-container  --log-opt max-size=5m --log-opt max-file=10 ubuntu /bin/bash

ここで、--log-opt max-size=5mは最大ログファイルサイズを5MBに指定し、--log-opt max-file=10はローテーションするファイルの最大数を指定します。

2
Visruth