Подтвердить что ты не робот

Докерные процессы, отображаемые в списке хостов

Я настраивал сервер Selenium, используя докер, в основном следуя этому учебнику github.

У меня нет проблем с настройкой сервера, но я заметил, что процессы, которые я запускал внутри образа докеры, фактически были показаны в моем списке процессов хоста.

enter image description here

Как вы можете видеть на снимке экрана, докер запускал bash script, а также исполнял файл jar, который, как я полагаю, должен происходить только внутри коробки. Означает ли это, что пользователь из хоста может убить определенный процесс за пределами контейнера, который полностью испортит мир внутри коробки?

Когда я остановил контейнер, все процессы ушли, как я ожидал.

Это то, как Docker предназначен для.. и недостаток изоляции - это то, что вы должны принять в торговле для облегчения по сравнению с Virtualbox/Vagrant... или я делаю что-то не так?

Спасибо!

4b9b3361

Ответ 1

Да, это так, как предполагалось. Обратите внимание, что процессы запускаются с помощью root, поэтому пользователь с привилегиями root может их убить, но пользователь с привилегиями root может сделать хуже, чем это (например, удалить docker o_O)...

Эта "ошибочная" изоляция действительно имеет некоторые большие преимущества, такие как способность отслеживать процессы, запущенные внутри всех ваших контейнеров, из одного процесса мониторинга выполняется на главной машине.

Ответ 2

Это, по-видимому, распространенное заблуждение о том, что Docker представляет собой легкую виртуальную машину ", поэтому некоторые могут ожидать подобного поведения, как VirtualBox или VMWare, но только быстрее.

Docker не использует виртуализацию, поэтому все процессы, выполняемые ядром ядра, просто изолированы друг от друга. Пользователь без полномочий root не может убивать процессы внутри контейнера, но root может остановить весь контейнер, чтобы не только убить процесс.

Чтобы различать процессы, запущенные внутри контейнера, и другие, запустите top, затем нажмите shift+f и выберите nsPID и nsUSER, как показано на скриншоте.

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

top nsPID and nsUSER