Понимание процессов контейнера докеров

Извините, если это глупый вопрос, но:

Я пришел из бродяги, где у нас есть полнофункциональная ОС на каждой машине, где, запустив ps -aux, мы можем видеть процессы ОС и наши службы (я до некоторой степени знаю разницу между приложениями, работающими в виртуальных машинах и Docker).

Затем я только что построил несколько контейнеров с помощью docker-compose и вошел в контейнер с помощью bash (который основан на образе debian: jessie). После запуска ps -aux я могу видеть только установленные мной службы, а не процесс отдельной ОС. Почему? Где они? Как это работает?

У Docker есть виртуальная машина, в которой работают контейнеры, каждый контейнер может быть основан на другом дистрибутиве, поэтому является ли ОС также контейнерной, учитывая тот факт, что для докера есть ОС хоста (ВМ)?

Всякий раз, когда вы слышите «контейнер Docker», просто подумайте «обычный процесс, но с кучей вещей (файловая система, процессы, сетевые вещи и т. д.), Изолированными через пространство имен».

Oliver Charlesworth 30.05.2018 22:50

@OliverCharlesworth Итак, на самом деле образ debian: jessie docker - это не операционная система, а ее симуляция в одном процессе?

Valdir 30.05.2018 22:54

По сути, все, что вы получаете, - это файловая система, которая выглядит как файловая система в «реальной» системе Jessie (поверх стандартных функций Docker - изолированных сетей и т. д.). Никакой эмуляции / моделирования не происходит.

Oliver Charlesworth 30.05.2018 22:55
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
2
3
691
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Docker has a VM in which the containers run

Нет, контейнеры не являются виртуальными машинами (докер включает виртуальную машину для настольных версий, но это не контейнер, и есть среды выполнения виртуальных машин, но это не традиционный контейнер).

Контейнеры - это способ изолировать работающее приложение с пространствами имен ядра для таких вещей, как файловая система, pid и сеть. Все они работают в одном ядре. Получение базового образа для Alpine, Ubuntu и т. д. Дает вам базовую файловую систему, библиотеки, менеджеры пакетов, но не ядро. Единственный процесс, запускаемый внутри контейнера, - это ваше приложение, и когда ваше приложение завершает работу, контейнер тоже. Поэтому вы не увидите запущенных утилит ОС.

См. Также этот ответ

Другие вопросы по теме