Является ли контейнер Docker/LXC запущенным приложением или что-то в памяти?

Я просто прочитал отличный вопрос SO, задающий В чем разница между Docker и VM?. Тем не менее, принятый ответ оставил меня желающим только немного больше.

Я вроде понимаю контейнер (Docker/LXC - я не понимаю), чтобы использовать что-то под названием libcontainer и AuFS, чтобы десятки, сотни и даже тысячи контейнеров могли совместно использовать один и тот же процессор, RAM и диск Ресурсы. Но ответ по-прежнему не объясняет точно, что такое "контейнер"!

Является ли контейнер только экземпляром этого libcontainer запуска? Это приложение, которое использует libcontainer? Это что-то Linuxy, как процесс service/daemon? Поэтому я спрашиваю:

  • Что такое точно - это "контейнер"?
  • Каковы точные вычислительные/системные ресурсы, которые могут использоваться несколькими контейнерами внутри одного и того же виртуального/физического?
  • Является ли Docker/LXC "гипервизором" в уравнении контейнера? Если нет, то какова связь между Docker, LXC и libcontainer?

Ответы

Ответ 1

ответ по-прежнему не объясняет точно, что такое "контейнер"!

Контейнер в основном представляет собой процесс, изолированный, со всей средой, в которой он нуждается для своей работы (веб-сервер, база данных, CMS, любое программное обеспечение...).

Контейнер использует пространства имен Linux для изоляции процессов, сети и файловых систем. Контейнер использует концепцию изоляции процесса: файловая система, процесс, сеть, ресурс (процессор, память), протоколирование (STDIN...), изоляция оболочки.

Докер/LXC - я не понимаю разницу

LXC - это набор инструментов для управления контейнерами; Docker - это еще один набор инструментов (все они включены в одну и ту же программу), который также добавляет формат файла, поэтому содержимое "изображения" может передаваться от машины к машине. Докер гораздо более разговорчив, чем LXC. Docker использовал библиотеку lxc для управления контейнерами, но заменил ее собственной библиотекой, называемой... libcontainer.

Каковы точные вычислительные/системные ресурсы, которые могут использоваться несколькими контейнерами внутри одного и того же виртуального/физического?

Контейнеры на одной машине будут совместно использовать процессор, память и ядро. Кроме того, Docker позволяет вам использовать их в одной сети.

Является ли Docker/LXC "гипервизором" в уравнении контейнера?

Ядро Linux является настоящим "гипервизором", а Docker/LXC отправляет ему команды для создания и управления контейнерами.