Поиск по сайту:

Контейнеры


Введение

Эта контрольная точка предназначена для того, чтобы помочь вам оценить, что вы узнали из наших Kubernetes, двух распространенных контейнерных решений. Вы можете использовать эту контрольную точку, чтобы оценить свои знания по этим темам, просмотреть ключевые термины и команды и найти ресурсы для дальнейшего обучения.

Контейнеризация — это процесс изоляции среды разработки на уровне операционной системы для создания переносимой среды выполнения. Контейнеры совместно используют ресурсы хоста, что позволяет запускать приложение в предсказуемой и контролируемой среде. Использование контейнеров для абстрагирования инфраструктуры и изоляции приложения позволяет эффективно и последовательно масштабировать процессы разработки и тестирования.

В этом контрольном пункте вы найдете два раздела, которые обобщают основные идеи из вводных статей: раздел, в котором кратко излагаются цели экосистемы контейнеров, и второй, посвященный запуску команд, каждый из которых включает подразделы, относящиеся к Docker и Kubernetes соответственно. В каждом из этих разделов есть интерактивные компоненты, которые помогут вам проверить свои знания. В конце этой контрольной точки вы найдете возможности для дальнейшего изучения контейнеров.

Ресурсы

  • Введение в контейнеры
  • Как установить и использовать Docker в Ubuntu 22.04
  • Как установить и использовать Docker Compose в Ubuntu 22.04
  • Как использовать docker exec для запуска команд в контейнере Docker
  • Как обмениваться данными между контейнерами Docker в Ubuntu 22.04
  • Как настроить частный реестр Docker в Ubuntu 20.04
  • Введение в Kubernetes
  • Как использовать minikube для локальной разработки и тестирования Kubernetes

Что такое контейнер?

Контейнеры обеспечивают предсказуемую и контролируемую среду для разработки ваших приложений. Контейнерные механизмы — это то, что люди обычно имеют в виду, говоря о контейнере.

Чтобы понять контейнеры, важно познакомиться с несколькими ключевыми инструментами контейнеризации.

Дайте определение каждому из следующих терминов, а затем используйте функцию раскрывающегося списка, чтобы проверить свою работу.

Механизмы контейнеров — это комплексное решение для контейнеризации, включающее в себя контейнер, среду выполнения контейнера, образ контейнера и инструменты для их создания. Механизм может также включать реестры образов контейнеров и оркестровку контейнеров. Docker — один из наиболее часто используемых контейнерных движков.

Образ контейнера – это шаблон, предназначенный для создания среды внутри контейнера. Когда образ запускается, слой изображения, доступный только для чтения, накладывается на слой для чтения и записи, который можно настроить в отдельном экземпляре контейнера.

Реестр образов – это репозиторий, в котором хранятся образы контейнеров. Вы можете использовать реестр или репозиторий образов для управления и совместного использования образов контейнеров.

Среда выполнения контейнера управляет запуском и выполнением контейнера. Существует две группы сред выполнения контейнеров: Open Container Initiative (OCI) и Container Runtime Initiative.

Инициатива Open Container предоставляет спецификации и стандарты для форматов контейнеров. OCI обеспечивает основу для запуска контейнера, такого как часто используемый runc.

Инициатива Container Runtime Initiative сосредоточена на оркестровке контейнеров.

Оркестрация включает подготовку, настройку, масштабирование, планирование, развертывание, мониторинг и многое другое и обычно используется для автоматизации развертывания контейнеров.

Многие разработчики предпочитают контейнеризацию из-за ее переносимости и предсказуемой производительности. Абстрагирование инфраструктуры позволяет одинаково тестировать приложение на нескольких машинах. Эта стабильность в базовой среде позволяет разработчикам работать совместно и удаленно.

Чтобы обеспечить надежную среду разработки и производства, вы можете удовлетворить следующие потребности:

  • Предсказуемая и переносимая производительность.
  • Эффективность использования и памяти
  • Безгражданство с возможностью сохранения данных
  • Изолированные контейнеры с возможностью объединения в кластерную сеть
  • Журналирование ошибок и выходных данных во время тестирования контейнера
  • Развязка приложений и инфраструктуры
  • Специализация и микросервисы

Когда контейнеры создаются из одного и того же базового образа, они обеспечивают надежную среду, которая может учитывать ваши потребности в разработке и тестировании. Эта согласованность позволяет вам создавать и уничтожать контейнеры по мере необходимости во время разработки вашего приложения.

Если вы работаете над долгосрочным проектом, для которого требуются постоянные данные в контейнере, вы можете смонтировать том для постоянного хранения данных и обмена данными между контейнерами.

Docker — это два распространенных контейнерных решения. В разделах ниже вы можете оценить, что вы узнали о различиях между ними, работая с обоими вариантами во вводных статьях.

Docker — это контейнерный движок, который чаще всего используется для одновременного запуска одного или двух контейнерных приложений.

Kubernetes — это программное обеспечение для оркестровки, которое позволяет запускать множество перекрывающихся контейнеров в нужном масштабе. Первоначально Kubernetes использовал среду выполнения Docker, но теперь в основном использует уровень абстракции containerd.

Что такое докер?

С помощью Docker вы можете управлять процессами приложений в контейнерах. Docker обычно используется в качестве контейнерного движка и может работать в различных операционных системах.

Вы можете сопоставить свой контейнер Docker с хост-компьютером, сопоставив порты или позволив Docker выбрать случайный, вероятно, неиспользуемый порт. Этот процесс упрощает среду тестирования. Чтобы узнать больше об использовании Docker, вы можете просмотреть The Docker Ecosystem: An Introduction to Common Components.

Docker использует специальную терминологию для поддержки настройки системы. Оцените свои знания терминов Docker, чтобы знать:

Дайте определение каждому из следующих терминов, а затем используйте функцию раскрывающегося списка, чтобы проверить свою работу.

Docker Compose — это инструмент командной строки, который позволяет запускать многоконтейнерные среды приложений в соответствии с файлом YAML. Файл конфигурации YAML будет определять настройку, часто со средой веб-сервера, перенаправлением портов и общим томом.

Docker Hub — это специальный реестр образов, управляемый Docker, компанией, стоящей за проектом Docker.

Образ Docker — это шаблон для создания контейнеров. Есть много общих изображений, доступных для использования.

Том Docker можно использовать для сохранения данных между контейнерами, включая контейнеры, которые остановлены или удалены.

SwarmKit — это набор инструментов для оркестровки с открытым исходным кодом, созданный на Go, который можно использовать для кластера в режиме роя.

Это отличается от предыдущего инструмента под названием Docker Swarm, который теперь называется Swarm Classic и относится к уже заархивированной собственной кластеризации для Docker. Swarm Classic был вариантом для крупномасштабной кластеризации.

Контейнеры Docker предоставляют переносимую и согласованную среду выполнения, которую часто можно развернуть в кластерах Kubernetes.

Что такое Кубернетес?

С Kubernetes вы можете запускать и управлять контейнерными приложениями и службами в кластере машин. Kubernetes часто используется для масштабирования потребностей контейнеризации.

Kubernetes использует специальную терминологию для поддержки настройки системы. Оцените свои знания терминов Kubernetes, чтобы знать:

Дайте определение каждому из следующих терминов, а затем используйте функцию раскрывающегося списка, чтобы проверить свою работу.

Развертывание — это рабочая нагрузка Kubernetes, использующая наборы репликации для управления циклами.

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

Серверы в кластере — это узлы, один из которых действует как плоскость управления для кластера, а другие серверы функционируют как рабочие узлы. Каждый узел включает среду выполнения контейнера для управления приложениями и службами в контейнерах на этом узле.

Контейнеры, управляемые как одно приложение, группируются в виде pod. Поды создаются контроллером репликации или набором репликации.

Ваш кластер Kubernetes, состоящий из центрального сервера и узлов, включает в себя определенные компоненты, которые помогают работе кластера и серверам взаимодействовать друг с другом. Для более подробного описания архитектуры Kubernetes вы можете просмотреть An Introduction to Kubernetes.

Чтобы упростить сетевую настройку серверов в кластере, Kubernetes требуются определенные компоненты в плоскости управления, к которым также можно получить доступ через узлы, в том числе:

  • Хранилище пар ключ-значение, которое может быть распределено по узлам, например etcd.
  • Сервер API (kube-apiserver), который можно использовать для настройки рабочих нагрузок и отправки команд.
  • Диспетчер контроллеров (kube-controller-manager) для управления рабочей нагрузкой, выполнения задач и регулирования кластера.
  • Планировщик (kube-scheduler) для назначения рабочих нагрузок определенным узлам.
  • Облачный контроллер (cloud-controller-manager) для взаимодействия с облачным провайдером, ресурсами и службами от имени кластера.

Узлам также нужны определенные компоненты для связи с центральным сервером и выполнения назначенных им рабочих нагрузок, в том числе:

  • Среда выполнения контейнера на каждом узле, например Docker или runc.
  • Служба связи, такая как kubelet, с плоскостью управления и обратно; kubelet использует манифест для определения получаемой рабочей нагрузки и управления рабочим состоянием узла.
  • Небольшой прокси-сервер, чаще всего kube-proxy, для пересылки запросов в контейнеры.

Существуют инструменты командной строки для Docker и Kubernetes, каждый со своим синтаксисом. Вы также можете управлять своими контейнерами с помощью панели инструментов Kubernetes, доступной через веб-браузер при развертывании.

Использование командной строки

Вы начали использовать статьи о базах данных.

Во введении в контейнеры вы продолжили знакомство с командной строкой с помощью таких команд, как:

  • cat для отображения файла.
  • chmod для установки разрешений с помощью нового инструмента.
  • curl для передачи данных по указанному адресу (URL).
  • echo для отображения строки, переданной в качестве аргумента.
  • env для печати всех переменных среды.
  • выход, чтобы закрыть интерактивную оболочку Docker.
  • mkdir для создания новых каталогов.
  • pwd для печати текущего рабочего каталога.
  • systemctl для управления демоном Docker.
  • tail для печати последних десяти строк файла.
  • наблюдайте, чтобы постоянно запускать определенную команду (по умолчанию каждые две секунды).
  • whoami, чтобы напечатать имя пользователя текущего пользователя.

Вы также работали с уникальным синтаксисом команд для различных механизмов контейнеров и использовали менеджер пакетов Homebrew для установки minikube для своего кластера Kubernetes. В разделах ниже вы рассмотрите команды, которые вы запускали во вводных статьях для Docker и Kubernetes.

Запуск команд Docker

В статьях, посвященных Docker, вы установили и управляли контейнером Docker на сервере Ubuntu. По умолчанию команду docker может запускать только пользователь root, добавив перед ним команду sudo или пользователь из группы docker.

Вы использовали команду docker для передачи параметров, подкоманд и аргументов в ваш контейнер Docker:

  • docker exec для запуска команд в активном контейнере, используя флаг --workdir для указания каталога, в котором должна выполняться команда, - Флаг -user для запуска команды от имени другого пользователя и флаг -e для передачи переменной среды в контейнер или --env-file флаг, чтобы указать файл .env.
  • docker images для просмотра изображений, загруженных в вашу систему.
  • docker info для доступа к общесистемной информации.
  • docker ps для просмотра активных контейнеров, запущенных в вашей системе, с помощью переключателя -a для просмотра всех контейнеров, как активных, так и неактивных, и -l переключиться на просмотр последнего созданного вами контейнера.
  • docker rename, чтобы переименовать контейнер.
  • docker rm с идентификатором или именем контейнера, чтобы удалить контейнер.
  • docker run для запуска контейнера из указанного образа с использованием комбинированных переключателей -it для интерактивного доступа к оболочке.
  • docker search для поиска образов, доступных в Docker Hub, и docker pull для загрузки указанного образа из реестра.
  • docker start с идентификатором или именем контейнера для запуска остановленного контейнера.
  • docker stop с идентификатором или именем контейнера, чтобы остановить работающий контейнер.
  • docker tag для переименования созданного образа.
  • docker volume для управления объемами данных.

Получите ответы, используя функцию раскрывающегося списка.

Команда docker exec используется для запуска программ и проверки запущенных контейнеров, тогда как вы можете запустить docker run для создания новых контейнеров.

Вы можете создавать образы с помощью Dockerfile с помощью команды docker build, хотя вы не запускали эту команду в этих вводных статьях. Dockerfile используется для создания образов, тогда как запуск файла конфигурации YAML с docker compose будет управлять оркестровкой.

Вы также использовали параметр --help для доступа к параметрам, доступным для различных подкоманд, таких как следующие переключатели:

  • --name, чтобы дать имя контейнеру.
  • --rm для создания контейнера, который удаляет себя при остановке.
  • -d отсоединит контейнер от терминала, чтобы запустить его в фоновом режиме.
  • -v для управления томом Docker путем присвоения ему имени или для создания привязки (при указании / или ~/).< /li>

Docker также предоставляет инструмент командной строки Docker Compose для управления многоконтейнерными средами. Вы настроили файл конфигурации YAML для создания среды веб-сервера с перенаправлением портов и общим томом и выполнили следующие команды для управления контейнерами:

  • docker compose up запускает контейнерную среду.
  • docker compose ps предоставляет информацию о запущенных контейнерах и перенаправлении портов.
  • docker compose logs получает доступ к журналам вашего контейнера.
  • docker compose pause приостанавливает работу контейнера, а docker compose unpause возобновляет его работу.
  • docker compose stop остановит контейнер.
  • docker compose down удаляет контейнеры, сети и тома, связанные со средой.

Получите ответы, используя функцию раскрывающегося списка.

Команда docker запускает все подкоманды в командной строке, тогда как docker compose запускает файл YAML для предоставления данных конфигурации, которые можно использовать для нескольких сред контейнеров. Контейнеры, запущенные с помощью docker compose, также могут совместно использовать сети и тома данных.

Если у вас более крупное развертывание с несколькими параллельно работающими контейнерами, вы можете написать один файл YAML для настройки конфигураций контейнера и запустить docker compose для отправки команд всем компонентам и управления ими как группой. . В результате docker compose помогает масштабировать управление контейнерами по мере роста ваших приложений и необходимости надежной настройки оркестровки.

Чтобы управлять своими образами с помощью личного реестра Docker и Docker Hub, вы выполнили следующие команды:

  • docker login, чтобы войти в систему с переключателем -u для вашего имени пользователя.
  • docker commit для фиксации нового образа Docker с переключателем -m для предоставления сообщения о фиксации и переключателем -a для указания автор.
  • docker push для отправки изображений, в том числе в ваш собственный репозиторий.
  • docker pull, чтобы перенести изображения на новый компьютер.

Для постоянных данных вы также делитесь данными между контейнером Docker и хостом.

Docker — это один из распространенных контейнерных движков; Kubernetes — это платформа оркестрации, которая может запускать контейнерный движок Docker.

Запуск команд Kubernetes

В статьях, посвященных Kubernetes, вы запустили компаньон minikube с платформой Docker для имитации кластера Kubernetes, работающего на одном компьютере, что позволило вам получить доступ к панели инструментов браузера для вашего кластера Kubernetes.

Вы выполнили следующие команды minikube:

  • minikube start, чтобы запустить инструмент и включить kubectl, при необходимости используя -p или --profile. возможность указать кластер.
  • панель управления minikube для доступа к панели управления Kubernetes с автоматической переадресацией портов, используя параметр --url для облегчения переадресации портов с удаленного сервера через туннелирование SSH.
  • minikube service с указанной службой и опцией --url для получения URL-адреса работающей службы.
  • minikube config для управления кластером с помощью таких подкоманд, как set memory, get profile,
  • minikube delete, чтобы удалить службу и повторно развернуть ее.
  • minikube mount для временного монтирования каталога из вашей локальной файловой системы в кластер с использованием local_path:minikube_host_path синтаксис, чтобы указать, какой каталог и где в контейнере.
  • профиль minikube с указанным кластером для переключения активного профиля.

Вы также использовали команду kubectl со следующими подкомандами:

  • kubectl get pods для получения списка всех модулей, работающих в вашем кластере, используя аргумент -A для поиска всех пространств имен.
  • kubectl create deployment, чтобы создать именованное развертывание как службу, используя параметр --image для вызова указанного удаленного образа.
  • kubectl expose deployment для предоставления именованного развертывания, указав порт с параметром --port и параметром --type.< /li>
  • kubectl get service, чтобы проверить, запущена ли указанная служба.
  • kubectl получить узлы, чтобы получить список активных узлов в кластере, используя параметр --kubeconfig, чтобы указать другой файл конфигурации YAML.

Чтобы начать работу с управляемой службой Kubernetes, вы можете просмотреть документацию DigitalOcean Kubernetes Quickstart.

Что дальше?

Обладая более глубоким пониманием контейнеров и популярных механизмов контейнеров баз данных, вы можете контейнеризовать свою среду разработки для согласованности при создании приложений. Это может показаться слишком простым ответом для такой сложной темы, но теперь у вас есть контейнерная экосистема (или две!), в которой вы можете экспериментировать, создавать приложения и масштабировать проекты.

Чтобы расширить свою экосистему Docker, вы можете следовать следующим руководствам:

  • Контейнеризация приложения Node.js для разработки с помощью Docker Compose
  • Как защитить контейнерное приложение Node.js с помощью Nginx, Let’s Encrypt и Docker Compose

Если вы предпочитаете сразу приступить к делу, попробуйте выполнить развертывание из образов контейнеров.

Чтобы продолжить разработку кластера Kubernetes, вы можете ознакомиться с этими статьями:

  • Архитектура приложений для Kubernetes
  • Модернизация приложений для Kubernetes
  • Рекомендации по преобразованию монолитных приложений в микросервисы
  • Наша серия «От контейнеров до Kubernetes с Django»

Если вы хотите высвободить ресурсы для разработки, вы можете перейти на реестр контейнеров DigitalOcean (DOCR) для дополнительной поддержки ваших контейнеров Docker и кластеров DigitalOcean Kubernetes.

Обладая новыми знаниями о контейнерах, вы готовы продолжить свое облачное путешествие с базами данных.