Я подключил журналы своих контейнеров к хосту (например, /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
Однако это может привести к состоянию гонки.
Если у вас есть лучшее решение, опубликуйте его.