Назад | Перейти на главную страницу

Журналы контейнера докеров Logrotate, когда пользователь не существует на хосте

Я подключил журналы своих контейнеров к хосту (например, /var/log/container1, и т.д). Теперь я хочу использовать хост logrotate.

Но предположим, мне нужно сделать это:

create 660 mysql mysql

Здесь нет mysql user / group на хосте, поэтому logrotate не работает с:

неизвестный пользователь mysql

Итак, я попробовал:

create 660 999 999   # 999 is mysql user's uid/gid within container

Но потом получаю:

неизвестный пользователь 999

Итак, я попробовал:

create 660 999 999
su 999 999

Но это дает ту же ошибку.

Как я могу это сделать, без создание фиктивного пользователя на хосте?

(Кстати, прежде чем вы скажете мне полагаться на собственную ротацию журналов Docker ... это всего лишь пример. Я использую различные контейнеры, которые не регистрируются в stdout / stderr, поэтому мне нужно выполнить ротацию журнала самостоятельно.)

Я думаю проблема в logrotate не распознает несуществующий uid / gid, хотя файловая система это распознает.

Обходной путь:

#create 660 mysql mysql                # break it: will use default of root:root
postrotate
  chown 999:999 /var/log/container1/   # fix it
endscript

Однако это может привести к состоянию гонки.

Если у вас есть лучшее решение, опубликуйте его.