Виртуальные машины
Виртуальная машина эмулирует полноценный компьютер. Он имеет виртуальную прошивку, виртуальные диски, виртуальные сетевые адаптеры и гостевую операционную систему. На хосте работает гипервизор, который предоставляет эти виртуальные устройства.
Виртуальные машины отлично подходят для изучения установки Linux, тестирования настроек сервера, изоляции рискованных экспериментов и запуска различных операционных систем на одной машине.
Containers
Контейнер не является полноценной виртуальной машиной. Это изолированная среда процессов, использующая ядро хоста с такими функциями, как пространства имен, контрольные группы, монтирование и образы. Контейнеры запускаются быстро, поскольку не загружают отдельное ядро.
Контейнеры упаковывают приложения с зависимостями пользовательского пространства, что делает развертывание более повторяемым. Они по-прежнему зависят от поведения ядра и безопасности хоста.
Основы Докера
Docker популяризировал рабочие процессы контейнеров на основе образов. Изображение — это шаблон многоуровневой файловой системы. Контейнер — это работающий экземпляр изображения. Dockerfile описывает, как создать образ.
Linux занимает центральное место в Docker, поскольку функции изоляции контейнеров исходят из ядра Linux. Docker Desktop в системах, отличных от Linux, скрыто использует виртуальную машину Linux для контейнеров Linux.
Хост против гостя и облегченная изоляция
| Concept | Виртуальная машина | Container |
|---|---|---|
| Kernel | Гость имеет собственное ядро | Разделяет ядро хоста |
| Startup | Сапоги как машина | Начинается как процесс |
| Isolation | Более строгая граница на аппаратном уровне | Упрощенный процесс и граница пространства имен |
| Use | Различные ОС, полные тесты системы | Развертывание приложений, услуги, CI |
Где Linux вписывается в облачную инфраструктуру
Облачные платформы используют огромное количество Linux: виртуальные машины, хосты контейнеров, узлы Kubernetes, маршрутизаторы, системы хранения, CI-работники, бессерверные среды выполнения и базы данных.
Изучение основ Linux напрямую переносится на работу в облаке, поскольку облачные абстракции по-прежнему сводятся к процессам, файлам, пакетам, журналам, сетям, разрешениям, хранилищам и сервисам.