Что такое docker и как его использовать?

Системное администрирование

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

Что такое Docker?

Docker (оф сайт: https://www.docker.com/) использует технологию контейнеризации для упаковки приложений и их зависимостей в контейнеры, которые могут быть легко перенесены между различными компьютерами и средами. Контейнеры Docker могут содержать все необходимые компоненты для запуска приложения, такие как операционная система, языковые библиотеки, базы данных и другие зависимости.

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

Преимущества использования Docker

Использование Docker имеет ряд преимуществ, среди которых:

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

Установка Docker на Ubuntu и Centos

Установка Docker является простой и производится из стандартных репозиториев apt-get и yum в зависимости от операционной систему. Для установки Docker на Ubuntu 22.04 и Centos 8 необходимо выполнить следующие действия:

Установка необходимых зависимостей

На Ubuntu 22.04:

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

На Centos 8:

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

Добавление официального репозитория Docker

На Ubuntu 22.04:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

На Centos 8:

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Установка Docker

Выполним непосредственно установку Docker из репозитариев apt-get или yum в зависимости от Вашей операционной системы:

На Ubuntu 22.04:

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

На Centos 8:

sudo yum install -y docker-ce docker-ce-cli containerd.io

На этом установка Docker на Ваш сервер завершена. Для проверки, Вам необходимо выполнить команду:

sudo docker run hello-world

Примеры развертывания контейнеров Docker

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

Запуск контейнера с веб-приложением

Поиск образа в Docker Hub:

docker search web-app

Загрузка образа:

docker pull web-app:latest

Запуск контейнера:

docker run -p 80:8080 --name my-web-app web-app:latest

Создание образа на основе Dockerfile

Dockerfile – это текстовый файл, который содержит инструкции по созданию образа Docker. Этот файл описывает, какие действия нужно выполнить для создания образа, включая установку зависимостей, настройку окружения, копирование файлов, запуск команд и т.д.Вот пример простого Dockerfile для создания образа с веб-приложением на базе Node.js:

# Использование образа Node.js версии 14.x в качестве основы
FROM node:14

# Создание директории приложения
WORKDIR /app

# Установка зависимостей
COPY package*.json ./
RUN npm install

# Копирование файлов приложения в контейнер
COPY . .

# Определение команды для запуска приложения
CMD [ "npm", "start" ]

# Определение порта, который будет использоваться приложением
EXPOSE 3000

Этот Dockerfile описывает следующие действия:

  1. Базовый образ: использование образа Node.js версии 14.x в качестве основы для создания нового образа.
  2. Создание директории приложения: создание новой директории /app внутри контейнера и установка ее в качестве рабочей директории для всех дальнейших команд.
  3. Установка зависимостей: копирование файла package.json и package-lock.json в контейнер и выполнение команды npm install для установки всех зависимостей приложения.
  4. Копирование файлов приложения: копирование всех файлов и директорий из текущего каталога (где находится Dockerfile) в контейнер в директорию /app.
  5. Определение команды для запуска приложения: определение команды npm start как команды, которая будет запускаться в контейнере при старте контейнера.
  6. Определение порта: определение порта 3000, который будет использоваться приложением внутри контейнера.

Чтобы создать образ на основе этого Dockerfile, необходимо выполнить команду docker build с указанием пути к каталогу, в котором находится Dockerfile:

docker build -t my-web-app:latest

Эта команда создаст новый образ с тегом my-web-app:latest на основе Dockerfile, который находится в текущем каталоге. Образ будет содержать все зависимости, необходимые для работы приложения, а также команду для запуска приложения при старте контейнера.

После создания образа можно запустить контейнер с помощью команды docker run:

docker run -p 80:8080 --name my-web-app my-web-app:latest

Использование Docker Compose для развертывания множества контейнеров

  1. Создание файла docker-compose.yml с описанием контейнеров.
  2. Запуск контейнеров:
    docker-compose up -d

Использование Docker Swarm для развертывания контейнеров в кластере

  1. Инициализация Swarm:
    docker swarm init
  2. Создание сервиса:
    docker service create --name my-web-app --replicas 3 web-app:latest

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

Кроме того, Вам так же будет интересно ознакомиться с Git Hub и примерами его использования.

Заключение

Docker – это мощный инструмент для контейнеризации приложений, который обеспечивает изоляцию, переносимость, удобство и эффективность. Установка Docker на Ubuntu и Centos проста и занимает всего несколько шагов. С помощью Docker можно легко развернуть приложения в контейнерах, использовать Kubernetes для управления контейнерами и Docker Compose для развертывания множества контейнеров. Если вы не используете Docker, вы упускаете много возможностей для упрощения вашего процесса разработки, тестирования и развертывания приложений.

Оцените статью