Как запустить Docker контейнер: пошаговое руководство

Как запустить Docker контейнер: пошаговое руководство

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

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

Что такое Docker

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

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

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

Docker стал важным инструментом для DevOps, так как упрощает развертывание, масштабирование и управление приложениями в различных средах.

Для чего нужен контейнер

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

  • Изоляция окружения: контейнеры позволяют приложениям работать в изолированной среде с их собственными библиотеками и зависимостями. Это предотвращает конфликты между приложениями, которые могут требовать разные версии одних и тех же библиотек.
  • Портативность: контейнеры могут быть легко перемещены и запущены на разных серверах или платформах (локально, в облаке и так далее), не требуя изменений в коде приложения или конфигурации.
  • Скорость развертывания: контейнеры запускаются намного быстрее, чем виртуальные машины, потому что они используют ядро операционной системы хост-машины и не требуют полной загрузки ОС.
  • Легкость масштабирования: контейнеры позволяют быстро масштабировать приложение, запуская множество экземпляров одного и того же контейнера для обработки большего количества запросов.
  • Экономия ресурсов: контейнеры используют меньше памяти и процессорных ресурсов, чем традиционные виртуальные машины, так как не требуют полной виртуализации аппаратного обеспечения.
  • Удобство в DevOps: контейнеры делают разработку и развертывание более предсказуемыми и автоматизированными, что упрощает интеграцию с системами CI/CD (непрерывной интеграции и развертывания).

Преимущества Docker контейнеров

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

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

Также Docker хорошо интегрируется с инструментами CI/CD, что помогает автоматизировать процессы развертывания и тестирования. Чтобы освоить работу с Docker, рекомендуется пройти специальные курсы Docker, которые детально объясняют принципы контейнеризации, инструменты и методы работы с этой технологией.

Необходимые условия

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

  • Amazon Web Services (AWS).
  • Docker Hub.

Настройка системы

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

Docker

Еще несколько версий назад запуск Docker на Windows и macOS вызывал немало проблем. Однако разработчики значительно улучшили процесс, и теперь установка стала очень простой.

Python

На Mac и большинстве Linux-дистрибутивов Python уже предустановлен. Также начиная с Windows 10 (обновление 1903 и выше), при вводе команды «python» в командной строке открывается Microsoft Store, где можно быстро установить последнюю версию Python. Если у вас старая версия Windows, вы можете обновиться до Windows 11, чтобы воспользоваться этой функцией и получить удобный доступ к установке Python.

Java (по желанию)

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

Запуск первой программы в Docker

Чтобы запустить первую программу в Docker, можно использовать следующий простой пример. Здесь мы создадим контейнер, который выполнит программу «Hello, World!» на базе Python.

  1. Установите Docker.

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

  1. Создайте рабочую директорию.

Создайте папку для вашего проекта, например:

mkdir my-first-docker-app

cd my-first-docker-app

папка проектаd0bad0b0d0ba d0b7d0b0d0bfd183d181d182d0b8d182d18c docker d0bad0bed0bdd182d0b5d0b9d0bdd0b5d180 d0bfd0bed188d0b0d0b3d0bed0b2d0bed0b5 d180 66f10c8b1bf96

  1. Создайте файл программы.

Создайте файл app.py с простым Python-кодом, который выведет «Hello, World!»:

print(”Hello, Word!”)

файл программыd0bad0b0d0ba d0b7d0b0d0bfd183d181d182d0b8d182d18c docker d0bad0bed0bdd182d0b5d0b9d0bdd0b5d180 d0bfd0bed188d0b0d0b3d0bed0b2d0bed0b5 d180 66f10c8b35676

  1. Создайте Dockerfile.

Создайте файл Dockerfile в той же папке, что и ваш Python-скрипт. Этот файл будет описывать, как собрать Docker-образ:

# Используем базовый образ Python

FROM python:3.9-slim

# Копируем текущую директорию внутрь контейнера

COPY . /app

# Задаем рабочую директорию

WORKDIR /app

# Устанавливаем зависимости (если они есть)
# Например: RUN pip install -r requirements.txt

# команда для запуска программы

CMD ["python", "app.py"]

описание docker образаd0bad0b0d0ba d0b7d0b0d0bfd183d181d182d0b8d182d18c docker d0bad0bed0bdd182d0b5d0b9d0bdd0b5d180 d0bfd0bed188d0b0d0b3d0bed0b2d0bed0b5 d180 66f10c8ae7b31

  1. Соберите Docker-образ.

Теперь нужно собрать Docker-образ на основе Dockerfile. В командной строке выполните команду:

docker build -t my-first-docker-app .

собираем docker образd0bad0b0d0ba d0b7d0b0d0bfd183d181d182d0b8d182d18c docker d0bad0bed0bdd182d0b5d0b9d0bdd0b5d180 d0bfd0bed188d0b0d0b3d0bed0b2d0bed0b5 d180 66f10c8b501ee

  1. Запустите контейнер.

После того как образ будет создан, вы можете запустить контейнер с этим образом:

docker run my-first-docker-app

запуск контейнераd0bad0b0d0ba d0b7d0b0d0bfd183d181d182d0b8d182d18c docker d0bad0bed0bdd182d0b5d0b9d0bdd0b5d180 d0bfd0bed188d0b0d0b3d0bed0b2d0bed0b5 d180 66f10c8b6a28d

В результате вы увидите вывод:

Hello, World!

вывод программыd0bad0b0d0ba d0b7d0b0d0bfd183d181d182d0b8d182d18c docker d0bad0bed0bdd182d0b5d0b9d0bdd0b5d180 d0bfd0bed188d0b0d0b3d0bed0b2d0bed0b5 d180 66f10c8b84f71

Объяснение этих операций:

  • Dockerfile описывает шаги по созданию Docker-образа. Мы используем базовый образ Python, копируем файлы программы в контейнер, а затем указываем, что контейнер должен выполнить Python-скрипт app.py.
  • docker build — команда, которая создает Docker-образ на основе Dockerfile.
  • docker run — команда для запуска контейнера с созданным образом.

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

Как работает команда docker run

Команда «docker run» инициирует процесс создания и запуска контейнера. Система выполняет ряд шагов, которые описаны в официальной документации Docker API:

  1. Консоль: запускает команду «docker run hello-world».
  2. Клиент Docker (CLI): обрабатывает команду и начинает выполнять необходимые действия.
  3. Docker-сервер: устанавливает связь с CLI, чтобы найти нужный образ с именем «hello-world» в локальном кэше образов (Image Cache). Если такой образ отсутствует, сервер связывается с Docker Hub для его загрузки.
  4. Docker Hub: это облачное хранилище, откуда сервер Docker загружает требуемый образ, если его нет в локальном кэше.
  5. Docker-сервер: после загрузки или нахождения образа в кэше создает контейнер на основе образа «hello-world».
  6. Контейнер Docker: запущенный контейнер исполняет программу, встроенную в образ, в данном случае это простое приложение «hello-world».
  7. Консоль: после завершения всех шагов выводит информацию, подтверждающую успешное выполнение команды.

Этот процесс обеспечивает выполнение изолированных приложений внутри контейнеров, упрощая их развертывание и управление.

Основные команды контейнеров Docker:

  • docker run [OPTIONS] IMAGE [COMMAND] [ARG…] — запускает новый контейнер на основе указанного образа.
  • docker ps — показывает список запущенных контейнеров.
  • docker ps -a — показывает список всех контейнеров, включая завершенные.
  • docker stop [CONTAINER] — останавливает работающий контейнер.
  • docker start [CONTAINER] — запускает ранее остановленный контейнер.
  • docker restart [CONTAINER] — перезапускает контейнер.
  • docker rm [CONTAINER] — удаляет остановленный контейнер.
  • docker rmi [IMAGE] — удаляет Docker-образ.
  • docker exec [OPTIONS] CONTAINER COMMAND [ARG…] — выполняет команду внутри уже запущенного контейнера.
  • docker logs [CONTAINER] — показывает логи контейнера.
  • docker build [OPTIONS] PATH | URL | — — собирает образ из
  • docker pull [IMAGE] — загружает образ из Docker Hub или другого репозитория.
  • docker commit [CONTAINER] [NEW_IMAGE_NAME] — создаёт новый образ из существующего контейнера.
  • docker network ls — показывает список всех сетей Docker.
  • docker volume ls — показывает список томов Docker.

Выводы статьи

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

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

Разное
Как запустить Docker контейнер: пошаговое руководство