Я смонтировал журналы своих контейнеров на хост (например, / var / log / container1
и т. Д. ). Теперь я хочу использовать хост logrotate
.
Но предположим, что мне нужно это сделать:
create 660 mysql mysql
На хосте нет пользователя / группы mysql
, поэтому 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
Это могло привести к состоянию гонки.
Если у вас есть лучшее решение, опубликуйте его.