Как определить, что какие-либо приложения внутри Docker-контейнера работают как root - PullRequest
0 голосов
/ 13 февраля 2019

Мы используем много сторонних изображений [например: gitlab, jenkins, centos7 ..], которые мы запускаем внутри наших док-контейнеров.Я хотел бы знать, как проверить, выполняется ли какое-либо из приложений, запущенных в контейнере, от имени пользователя root.Это то же самое, что проверка на обычном сервере ps -elf | grep root, но внутри контейнера.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Вы можете использовать команду docker top в сочетании с идентификатором процесса ... Комбинация "docker ps" и "docker top" может сделать это ..

Вы можете сделать stgвот так:

docker ps | perl -ne '@cols = split /\s{2,}/, $_; printf "%15s\n", $cols[0]' > tmp.txt &&  tail -n $(($(wc -l < tmp.txt)-1)) tmp.txt | xargs -L1 docker top | perl -ne '@cols = split /\s{2,}/, $_; printf "%15s %65s\n", $cols[0], $cols[7]' && rm tmp.txt

Это не идеальный ответ ((может быть, симпатичный), а также обратите внимание, что он работает только для запуска контейнера. Было бы безопаснее проверить это с точки зрения изображения,перед запуском контейнера. Затем, каждый раз, когда вы получаете изображение, просто проверяйте так:

d image inspect <image id> | grep -i user

Я могу ошибаться, но я думаю, что ни один пользователь не имеет в виду root. В противном случае вам придется проанализироватьвывод там.

0 голосов
/ 13 февраля 2019

Вы можете присоединить терминал к вашему работающему контейнеру, и как только вы окажетесь внутри, вы можете выполнить команду ps :

Присоединение к контейнеру

$ docker exec -it <container_id> /bin/bash

Подробнее о docker exec можно прочитать на официальном сайте документации: https://docs.docker.com/engine/reference/commandline/exec/

Надеюсь, это поможет!

...