Выполнение запроса grep для нескольких журналов док-контейнера, отфильтрованных по некоторому атрибуту - PullRequest
1 голос
/ 19 июня 2019

Я запускаю несколько док-контейнеров на удаленном сервере, которые помечены моим именем пользователя.Контейнеры запускают некоторый код с выводом на печатьЯ хочу выполнить поиск по строке «xyz», используя grep на выходе всех принадлежащих мне контейнеров (фильтр по имени пользователя).Ниже приведена моя попытка сделать это, которая, похоже, не работает:

docker ps -a -q --filter name=${USER} --format="{{.ID}}" | xargs -d ' ' docker logs | grep xyz

БОНУС: Я хочу сценарий python, который выполняет описанное выше для меня на всех серверах, на которых я запускаю свои контейнеры, из моего macbook, что-то вроде этого:

 os.system('ssh {}@{} \"docker ps -a -q --filter name={} --format={{{{.ID}}}} | xargs -d ' ' docker logs | grep xyz\"'.format(usern[server], server, usern[server]))

Где «сервер» - это имя сервера, а «пользователь» - это диктант, хранящий мое имя пользователя для этого сервера.Мои ключи ssh сохранены.

Очевидно, я тоже пытаюсь сделать эту работу.

1 Ответ

1 голос
/ 19 июня 2019
docker ps -a -q --filter name=${USER} | while read c; do docker logs $c; done | grep xyz

Следует также отметить, что -q и --format="{{.ID}}" являются синонимами, поэтому достаточно только одного из них.

...