Что такое контейнер Docker и как его запустить
Docker — это платформа для разработки, доставки и запуска приложений в изолированных средах, называемых контейнерами. Контейнеры Docker позволяют запускать приложения с их зависимостями в любом окружении, обеспечивая легкость развертывания и масштабирования. В этой статье мы рассмотрим, что такое контейнер Docker, как он работает, и как его запустить.
Что такое контейнер Docker?
Контейнер Docker — это изолированная среда, которая содержит приложение и все необходимые для его работы зависимости (библиотеки, настройки и системные компоненты). Контейнеры используют возможности операционной системы для создания изолированных окружений, которые обеспечивают портативность и согласованность приложения, независимо от среды, в которой оно выполняется (локальная машина разработчика, тестовые сервера или облачная инфраструктура).
Основные преимущества контейнеров Docker:
- Портативность: Контейнеры содержат всё необходимое для работы приложения, что позволяет запускать его в разных средах без необходимости адаптации.
- Изоляция: Каждый контейнер изолирован от других, что предотвращает конфликты между приложениями и зависимостями.
- Лёгкость и быстрота: Контейнеры работают быстрее, чем виртуальные машины, так как не требуют полной эмуляции аппаратного обеспечения.
- Масштабируемость: Контейнеры можно легко масштабировать горизонтально, запуская несколько копий одного и того же приложения.
Как работает контейнер Docker?
Контейнеры Docker основаны на образах Docker. Образ — это неизменяемый шаблон, который содержит всё необходимое для запуска контейнера, включая операционную систему, библиотеки, зависимости и само приложение. Контейнеры создаются на основе этих образов.
При запуске контейнера Docker использует изоляцию на уровне операционной системы (через namespaces и cgroups в Linux) для создания окружения, изолированного от основной системы. Это даёт контейнерам возможность работать с минимальными накладными расходами и без необходимости эмулировать полное виртуальное оборудование, как это делают виртуальные машины.
Разница между контейнером и виртуальной машиной
Контейнеры часто сравниваются с виртуальными машинами, но они имеют несколько ключевых отличий:
- Контейнеры используют ядро операционной системы хоста и изолируют приложение на уровне ОС, что делает их лёгкими и быстрыми.
- Виртуальные машины требуют отдельной операционной системы и виртуализации аппаратного обеспечения, что делает их более тяжёлыми и медленными по сравнению с контейнерами.
Как установить Docker?
Прежде чем начать работу с контейнерами Docker, вам необходимо установить Docker на вашем компьютере.
Шаги для установки Docker:
- Перейдите на официальный сайт Docker: https://www.docker.com.
- Выберите нужную версию Docker для вашей операционной системы (Windows, macOS, Linux) и скачайте установочный файл.
- Следуйте инструкциям для установки Docker на вашу систему.
- После установки проверьте, что Docker работает, выполнив команду в терминале:
docker --version
Если Docker установлен правильно, вы увидите версию Docker, например:
Docker version 20.10.8, build 3967b7d
Как запустить контейнер Docker?
Теперь, когда Docker установлен, давайте разберёмся, как запустить контейнер на основе Docker-образа. Для этого вам понадобится образ, на основе которого будет создан контейнер.
Шаг 1: Поиск образа на Docker Hub
Docker Hub — это публичный реестр, где можно найти и загрузить тысячи готовых Docker-образов для разных приложений и операционных систем.
Для поиска образа вы можете зайти на Docker Hub и найти нужный вам образ. Например, если вы хотите запустить веб-сервер Nginx, просто найдите его на Docker Hub.
Шаг 2: Запуск контейнера
Для запуска контейнера выполните следующую команду в терминале:
docker run nginx
Эта команда делает следующее:
- docker run — команда для запуска контейнера.
- nginx — имя образа, который будет использован для создания контейнера.
Если у вас ещё нет этого образа на локальной машине, Docker автоматически загрузит его с Docker Hub и запустит контейнер на его основе.
Шаг 3: Просмотр запущенных контейнеров
Чтобы увидеть список всех запущенных контейнеров, выполните команду:
docker ps
Вы увидите что-то вроде этого:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f1c9b9e8ddc9 nginx "/docker-entrypoint.…" 30 seconds ago Up 28 seconds 80/tcp friendly_booth
Шаг 4: Остановка контейнера
Чтобы остановить запущенный контейнер, используйте команду docker stop, указав идентификатор контейнера или его имя:
docker stop f1c9b9e8ddc9
Шаг 5: Запуск контейнера с портами
Многие контейнеры используют порты для работы (например, веб-серверы). Чтобы сделать порт контейнера доступным на вашей машине, используйте флаг -p для проброса порта:
docker run -d -p 8080:80 nginx
Эта команда делает следующее:
- -d — запускает контейнер в фоновом режиме (detached mode).
- -p 8080:80 — пробрасывает порт 80 контейнера на порт 8080 хостовой машины. Теперь Nginx доступен по адресу http://localhost:8080.
Как создать свой контейнер Docker?
Чтобы создать свой контейнер Docker, вам нужно написать Dockerfile — сценарий, который описывает шаги для создания образа.
Пример простого Dockerfile для Node.js-приложения:
# Используем базовый образ Node.js
FROM node:14
# Устанавливаем рабочую директорию
WORKDIR /app
# Копируем файл package.json и устанавливаем зависимости
COPY package*.json ./
RUN npm install
# Копируем исходный код
COPY . .
# Открываем порт 3000
EXPOSE 3000
# Запускаем приложение
CMD ["npm", "start"]
Шаг 1: Сборка Docker-образа
Чтобы создать образ на основе Dockerfile, выполните команду:
docker build -t my-node-app .
- -t my-node-app — задаёт имя образа.
- . — указывает на текущую директорию, где находится Dockerfile.
Шаг 2: Запуск контейнера
Запустите контейнер на основе созданного образа:
docker run -p 3000:3000 my-node-app
Теперь ваше приложение будет доступно по адресу http://localhost:3000.
Заключение
Контейнеры Docker — это мощный инструмент, который позволяет легко развертывать, тестировать и масштабировать приложения в изолированных средах. Благодаря контейнерам, разработчики могут гарантировать, что приложение будет работать одинаково в любой среде, будь то локальная машина или облако. В этой статье мы рассмотрели основы работы с Docker-контейнерами, начиная от установки Docker и заканчивая запуском контейнеров с помощью готовых образов и создания собственных образов с Dockerfile.
Комментарии