Рубрики
Uncategorized

Intro to Docker — контейнеры, изображения и Dockerfile

Введение Docker — это система контейнеризации, которая позволяет разработчикам и командам обращаться с приложением … Tagged с Docker, DevOps.

Вступление

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

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

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

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

Изображения и контейнеры

Мы можем думать об изображениях и контейнерах как о двух разных состояниях одной и той же основной концепции. По сути, мы можем сказать, что Контейнер — это управляемый экземпляр изображения Это пакеты и представляет определенное приложение. Ради аналогии, возвращаясь к классам и объектам Java, контейнер можно рассматривать как объект, а изображение можно рассматривать как класс.

Изображения используются для запуска контейнеров, и, начиная с запуска контейнеров, мы можем получить изображения, и все это может быть составлено вместе, чтобы сформировать очень мощный, агрессивный способ упаковки и развертывания приложений для упаковки и развертывания. Мне нравится думать об этом почти как «доставка вашего местного дома». Почему? Поскольку Docker требует, чтобы все конфигурации, необходимые для запуска приложения, содержались и установлены в изображении, создание изображения, по сути, воспроизводила текущее состояние работы как среды, так и приложения, и объединение его вместе, делая его доступным в облаке.

Итак, как резюме:

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

  • Контейнеры можно рассматривать как бегущие экземпляры изображений. Можно организовать несколько контейнеров, которые должны быть запущены и остановлены как «комплексная служба», что эффективно позволяет структурировать целые приложения в качестве кластера связанных контейнеров Docker

Dockerfile — путь к приложению.

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

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

A Dockerfile Это спецификация, которую мы используем для создания нового контейнера из уже предварительно созданного изображения и добавить нашу пользовательскую логику для запуска нашего приложения. Из Dockerfile , мы используем Docker Build Команда создать изображение.

A Dockerfile Работает слоями , где первый слой начинается с От Ключевое слово и определяет, какое предварительно построенное изображение использовать для создания собственного изображения. После этого мы можем определить больше таких вещей, как разрешения пользователей, которые файлы копируют в контейнер из локальной системы (например, например, Требования.txt из веб-приложения Python) и какие сценарии запуска для выполнения. Ниже приведен пример Dockerfile :

FROM python:3

WORKDIR /usr/src/app

COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD [ "python", "./your-daemon-or-script.py" ]

Давайте проведем содержимое этого простого Dockerfile и посмотрим, что происходит.

Первая строка Из Python: 3 заявляет, что изображение, которое мы собираемся построить, будет расширяться на базовом изображении, которое содержит все необходимое время выполнения для запуска приложений на основе Python 3.

Все команды после этого будут применяться поверх уже существующего изображения Python 3, и, как следствие, мы создадим наше собственное пользовательское изображение Python 3, которое содержит наше приложение.

Workdir Определяет рабочий каталог, поэтому каталог, который будет принят для любой другой команды, которая следует в Dockerfile, и где будет наше приложение. В CMD и Копия Команды ниже, Анкет Ссылка на каталог относится к Workdir Анкет

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

Запустить Команда является самоопределенной и просто выполняет определенную команду, которая в этом примере устанавливает наши зависимости.

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

Вывод

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

И последнее, но не менее важное, вы можете найти много официальных, заранее построенных изображений в Docker Hub .

Далее мы посмотрим, как упаковать простое приложение Spring Boot с Docker, и мы представим Docker-Compose Команда и файл Docker-Compose.

Оригинал: «https://dev.to/brunooliveira/intro-to-docker-containers-images-and-the-dockerfile-45om»