- •Билет №56. Виртуализация представлений. Rdp.
- •Билет №57. Многозадачность. Реальный режим.
- •Билет №59. Виртуализация памяти 64bit. Pae.
- •Билет №62. Кластеры. Гиперконвергентные системы.
- •Билет №63. Контейнеризация.
- •Вм vs Контейнер
- •Images — образ, это сущность, которая содержит ваше приложение, необходимое окружение и другие метаданные, необходимые для запуска контейнера;
- •Канальный (data link layer, уровень 2)
- •Транспортный (transport layer, уровень 4)
- •Билет №69. Mac-адрес. Arp.
- •Билет №70. Ip-адрес. Порт.
- •Билет №71. Http. Ftp. Ssh.
Вм vs Контейнер
Плюсы и минусы обоих подходов достаточно просты и прямо противоположны.
Полная виртуализация (ВМ) дает полную независимость до уровня железа, включая полностью независимые ОС, дисковый и сетевой стеки. А с другой стороны каждое приложение, ведь мы же придерживаемся схемы 1 приложение = 1 сервер, требует своей ОС, своего дискового и сетевого стека. т.е. идет многократный расход ресурсов.
Контейнеры имеют общие дисковый и сетевой стеки с хостовой ОС, и все вместе пользуются одним ядром на весь физический сервер (ну или виртуальный, как в последнее время), что в целом позволяет довольно значительно экономить ресурсы на однородных ландшафтах.
В историческом разрезе в рамках x86 сначала были контейнеры для всего, вместе с физическими серверами. После появления полной виртуализации значимость контейнеров сильно упала почти на 15 лет, и в корпоративном мире воцарились толстые ВМ. Контейнеры в это время нашли себя у хостеров, предоставлявших сотни однотипных веб-серверов, где и была востребована их легковесность. Но в последние годы, примерно с 2015, контейнеры вернулись в корпоративную реальность в виде cloud-native приложений.
Linux Namespaces
По умолчанию каждая Linux система содержит одно единственное пространство имен (Namespace). Все системные ресурсы, такие как файловые системы, идентификаторы процессов (Process IDs), идентификаторы пользователей (User IDs), сетевые интерфейсы принадлежат этому пространству имен. Но никто не мешает нам создать дополнительные пространства имен и перераспределить между ними системные ресурсы.
Когда запускается новые процесс, он запускается в пространстве имен, системном-стандартном или одном из созданных. И этот процесс увидит только те ресурсы, которые доступны в используемом для запуска пространстве имен.
Linux Control Groups (cgroups)
Linux Control Groups (cgroups) – это механизм ядра (Kernel) Linux систем, ограничивающий потребление системных ресурсов процессами. Каждый процесс или группа процессов не сможет получить больше ресурсов (CPU, память, сетевая полоса пропускания и т.д.), чем выделено, и не сможет захватить «чужие» ресурсы – ресурсы соседних процессов.
Билет №64. Docker.
Docker — это платформа для разработки, доставки и запуска контейнерных приложений. Docker позволяет создавать контейнеры, автоматизировать их запуск и развертывание, управляет жизненным циклом. Он позволяет запускать множество контейнеров на одной хост-машине.
Docker — это платформа контейнеризации с открытым исходным кодом, с помощью которой можно автоматизировать создание приложений, их доставку и управление. Платформа позволяет быстрее тестировать и выкладывать приложения, запускать на одной машине требуемое количество контейнеров.
Как было сказано выше, Docker не изобрели контейнеры как таковые. Контейнеры существуют уже много лет (в том числе и на базе LXC), но компания Docker сделала их очень популярными, создав первую систему, позволявшую легко и просто переносить контейнеры между разными машинами. Docker создала инструмент по созданию контейнеров — упаковке приложения и его зависимостей, и запуску контейнеров на любой Linux системе с установленным Docker.
Важной особенностью Docker является переносимость не только самого приложения и его зависимостей между абсолютно разными дистрибутивами Linux, но и переносимость окружения и файловой системы. Например, контейнер, созданный в CentOS, может быть запущен на Ubuntu системе. При этом внутри запущенного контейнера файловая система будет унаследована от CentOS, и приложение будет считать, что оно работает поверх CentOS. Это чем то похоже на OVF образ виртуальной машины, но концепция Docker образа использует слои. Это означает, что при обновлении только части образа нет необходимости скачивать еще раз весь образ целиком, достаточно скачать только измененный слой, как если бы в OVF образе можно было бы обновить ОС, не обновляя целиком образ.
Docker создал экосистему для создания, хранения, передачи и запуска контейнеров. В мире Docker есть три ключевых компонента: