Поднимите свои знания о контейнерах и Linux на новый уровень. Вам не нужно быть экспертом в области контейнеров или Linux, мы начнем с основ. Как этот курс отличается от других курсов на ту же тему? Он будет отличным дополнением к другим курсам на эту тему. Курс будет использовать подход снизу вверх, с уклоном на основные механизмы, которые делают контейнеры возможными - Namespaces, Overlay Filesystems и Cgroups.
Вы когда-нибудь задавались вопросом, как работают контейнеры? Нет, я не имею в виду только создание Dockerfile или Yaml файлов. Вы когда-нибудь спрашивали себя (или других), какие ключевые механизмы позволяют нам изолировать приложение или управлять тем, сколько CPU или памяти оно получает?
Как это возможно, чтобы приложение запускалось на том же физическом компьютере, что и другие приложения, но не знало о них? Как технологии, такие как Docker, добиваются этого? Для многих из нас контейнеры и Kubernetes Pods - это просто черный ящик. Но это необязательно. В этом курсе вы изучите основные механизмы, которые делают контейнеры возможными. Мы подробно рассмотрим Namespaces, Cgroups и Overlay FS и поймем, как они объединяются, чтобы дать нам контейнеры.
Практический курс: Концепции будут продемонстрированы на примерах на протяжении всего курса. У вас будет доступ к виртуальной машине Ubuntu, которую я использовал для демонстрации. Курс будет включать хорошую смесь теории и демонстраций, чтобы проиллюстрировать концепции.
В этом курсе вы изучите:
Namespaces: Начнем с того, как Namespaces обеспечивают изоляцию, ключевой механизм контейнеризации. Мы внимательно рассмотрим различные виды Namespaces - PID, MNT, IPC, USER и UTS, с примерами на практике, чтобы продемонстрировать каждый из этих Namespaces.
Overlay Filesystems: Затем мы рассмотрим, что такое Overlay Filesystems и поймем ключевую роль, которую они играют в мире контейнеров. Мы снова увидим рабочие примеры того, как создавать Overlay Filesystem и как они позволяют использовать общие модули в нескольких контейнерах.
Cgroups: Мы также подробно рассмотрим, что такое Cgroups, как они позволяют нам контролировать количество ресурсов, доступных для приложения. Мы создадим свои собственные Cgroups для управления объемом памяти и процессора, доступных для примера приложения.
Связанные системные концепции: Вы также узнаете связанные системные концепции, такие как файловая система Proc и точки монтирования, которые будут полезны при понимании PID и MNT Namespaces.
Для демонстраций мы будем использовать очень простые, понятные примеры вместо сложных приложений. Акцент будет сделан на закреплении ключевых концепций в этом курсе.
Docker: После того, как мы понимаем Namespaces, Overlay Filesystems и Cgroups, мы перейдем к Docker. Мы поймем, что такое Docker Images и как их создавать. Затем мы глубоко зайдем в то, как работает слоистая модель образов в Docker, и свяжем это с Overlay Filesystem. Будут представлены детальные рабочие примеры, чтобы продемонстрировать, как работает слоистая модель образов в Docker, и мы будем раскрывать эти изображения слой за слоем. Наконец, с помощью конкретных рабочих примеров мы продемонстрируем, как Cgroups работают внутри Docker контейнера, когда мы контролируем объем процессора или памяти, доступный для Docker контейнера.
Kubernetes: Мы рассмотрим идею Pod, почему он существует, и также создадим Pod, используя только Namespaces. Затем мы создадим Kubernetes Pods и поймем другие ресурсы, такие как Replica Sets и Deployments. Мы разберемся, какие есть ключевые компоненты в управляющей панели Kubernetes и как они объединяются, чтобы помочь нам инструментировать Pods. Наконец, мы продемонстрируем, как Cgroups являются ключевым механизмом, который позволяет нам контролировать ресурсы, доступные для Pod, такие как CPU и память.
Почему этот курс?
Потому что основы не меняются. Как только вы твердо овладеете этими основными концепциями, вы будете хорошо подготовлены к изучению любой технологии контейнеров с легкостью и большей ясностью. Кроме того, эти идеи используются в других областях, например, Cgroups также используются в виртуальных машинах. Знания, которые вы получите из этого курса, расширят ваш набор навыков. С крепким пониманием того, как вещи работают "под капотом", вы увидите контейнеры в новом свете.
Что нужно для прохождения курса?
Любопытство и терпение. Любопытство, чтобы понять, как работают контейнеры "под капотом". Я намеренно иду медленно, особенно в начале курса, создавая предпосылки для проблем, которые решают Namespaces. Вы должны быть терпеливы и сначала понять проблему, чтобы действительно оценить, почему Namespaces существуют и как они работают. Как только вы поймете проблему и историю, которую мы будем использовать в большей части курса, вы начнете по-настоящему оценивать основные концепции.
Предварительные знания: Если вы имеете опыт программирования и умеете использовать базовую командную строку Linux, вы готовы к началу. Не требуется иметь какой-либо опыт в технологиях контейнеров, таких как Docker или Kubernetes. Мы пройдем через все связанные области, такие как файловая система Proc и точки монтирования(Mount points). Также не требуется иметь глубоких знаний Linux. Я предоставлю необходимые сведения при необходимости. Было бы полезно, если бы вы смогли загрузить и использовать виртуальную машину, которая поставляется бесплатно с этим курсом.
Как следует подходить к этому курсу?
Во-первых, не пытайтесь втиснуть его в несколько недель - особенно, если вы раньше не имели дело с этими темами. Потому что мы глубоко погружаемся в эти темы, важно, чтобы вы шли в ногу с собственным темпом. Далее, выделяйте время для отдельных разделов. В некоторых областях каждого из этих разделов требуется больше времени. Например, Mount Namespaces довольно подробный, то же самое относится к Image Layering. Регулярно делайте перерывы, пересматривайте и дайте всему усвоиться. Как только вы все усвоите, вы обязательно получите большое удовольствие. Также важно, чтобы вы попрактиковались на примерах в демонстрациях, и когда вы поймете, попробуйте свои собственные примеры.