Контейнеры и образы — важные понятия, которые необходимо понимать при создании и управлении контейнированным программным обеспечением. Образ содержит набор программного обеспечения, готового к запуску, тогда как контейнер — это запущенный экземпляр образа контейнера. Различные версии представлены разными тегами под одним и тем же именем образа.
Контейнеры в Alauda Container Platform основаны на образах контейнеров формата OCI или Docker. Образ — это бинарный файл, который включает все необходимые компоненты для запуска одного контейнера, а также метаданные, описывающие его требования и возможности.
Можно рассматривать образ как технологию упаковки. Контейнеры имеют доступ только к ресурсам, определённым в образе, если им не предоставлен дополнительный доступ при создании. Развёртывая один и тот же образ в нескольких контейнерах на разных хостах и балансируя нагрузку между ними, Alauda Container Platform обеспечивает отказоустойчивость и горизонтальное масштабирование сервиса, упакованного в образ.
Вы можете использовать CLI nerdctl
или docker
напрямую для сборки образов, но Alauda Container Platform также предоставляет builder-образы, которые помогают создавать новые образы, добавляя ваш код или конфигурацию к существующим образам.
Поскольку приложения развиваются со временем, одно имя образа может фактически ссылаться на множество различных версий одного и того же образа. Каждая версия образа уникально идентифицируется своим хешем — длинным шестнадцатеричным числом, например fd44297e2ddb050ec4f…, которое обычно сокращается до 12 символов, например fd44297e2ddb.
Реестр образов — это сервер контента, который может хранить и предоставлять образы контейнеров. Например:
Реестр содержит коллекцию одного или нескольких репозиториев образов, которые содержат один или несколько тегированных образов. Alauda Container Platform может предоставлять собственный реестр образов для управления пользовательскими образами контейнеров.
Репозиторий образов — это коллекция связанных образов контейнеров и тегов, их идентифицирующих. Например, образы Jenkins для Alauda Container Platform находятся в репозитории:
Тег образа — это метка, применяемая к образу контейнера в репозитории, которая отличает конкретный образ от других образов в потоке образов. Обычно тег представляет собой номер версии. Например, здесь :v3 .11.59-2 — это тег:
Вы можете добавить дополнительные теги к образу. Например, образ может иметь теги :v3 .11.59-2 и :latest .
Идентификатор образа — это код SHA (Secure Hash Algorithm), который можно использовать для загрузки образа. SHA-идентификатор образа не может изменяться. Конкретный SHA всегда ссылается на точно такой же содержимое образа контейнера. Например:
Основными единицами приложений в Alauda Container Platform являются контейнеры. Технологии Linux-контейнеров — это лёгкие механизмы изоляции запущенных процессов, ограничивающие их взаимодействие только с назначенными ресурсами. Термин контейнер определяется как конкретный запущенный или приостановленный экземпляр образа контейнера.
Множество экземпляров приложений могут работать в контейнерах на одном хосте без видимости процессов, файлов, сети и прочего друг друга. Обычно каждый контейнер предоставляет одну службу, часто называемую микросервисом, например веб-сервер или базу данных, хотя контейнеры могут использоваться для любых рабочих нагрузок.
Ядро Linux уже много лет включает возможности для технологий контейнеров. Проект Docker разработал удобный интерфейс управления Linux-контейнерами на хосте. В последнее время Open Container Initiative разработала открытые стандарты для форматов контейнеров и сред выполнения контейнеров. Alauda Container Platform и Kubernetes добавляют возможность оркестрации контейнеров форматов OCI и Docker в многокластерных установках.
Хотя при использовании Alauda Container Platform вы не взаимодействуете напрямую со средами выполнения контейнеров, понимание их возможностей и терминологии важно для понимания их роли в Alauda Container Platform и работы ваших приложений внутри контейнеров.