Backend
October 11, 2023

Docker для новичков: создание, запуск, остановка

Что такое Docker

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

Почему Docker полезен? Во-первых, он позволяет быстро разворачивать и масштабировать приложения. Например, ты можешь запустить несколько копий веб-сервера в разных контейнерах, чтобы обрабатывать больше запросов.

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

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

Теперь давай разберемся, как все это работает.

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

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

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

Контейнеры создаются на основе образов Docker. Образ - это своего рода шаблон или снимок файловой системы и настроек приложения. Из образа можно запустить один или несколько контейнеров.

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

Хорошо, теперь давай установим Docker и запустим первый контейнер!

Установка Docker обычно занимает пару минут. Системные требования:

  • 64-битная ОС (Windows 10, MacOS, Linux)
  • Минимум 4Гб оперативной памяти
  • Включенная виртуализация в BIOS

На Windows и MacOS установщик Docker Desktop можно скачать на официальном сайте docker.com. На Linux нужно установить пакет docker или docker-ce через менеджер пакетов дистрибутива.

После установки запускаем Docker Desktop и видим в трее значок кита - это означает, что Docker работает!

Теперь давай запустим наш первый контейнер.

В качестве примера создадим контейнер с веб-сервером Nginx:

docker container run -d -p 8080:80 nginx

Разберем эту команду:

  • docker container run - запускает новый контейнер
  • -d - запуск в фоновом режиме
  • -p 8080:80 - сопоставляет порт 8080 на хосте с 80 портом в контейнере
  • nginx - использует образ nginx

Эта команда загрузит образ nginx с Docker Hub (облачный реестр образов), создаст контейнер и запустит в нем веб-сервер. Теперь мы можем открыть браузер и перейти на localhost:8080, чтобы увидеть работающий Nginx!

Чтобы остановить контейнер, используем:

docker container stop <container_id>

Контейнер перестанет работать, но не удалится.

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

docker container start <container_id>

А команда docker container rm <id> полностью удалит контейнер.

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

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

Например, чтобы создать контейнер MySQL, выполняем:

docker container run -d --name mysql -e MYSQL_ROOT_PASSWORD=secret -p 3306:3306 mysql

А для PostgreSQL:

docker container run -d --name postgres -e POSTGRES_PASSWORD=secret -p 5432:5432 postgres

Так мы можем легко запускать базы данных в контейнерах и использовать их в наших проектах!

Но что если нужного образа на Docker Hub нет? Тогда можно создать свой Dockerfile и собрать образ.

Dockerfile - это текстовый файл с набором команд для сборки образа:

FROM ubuntu:latest 
RUN apt-get update && apt-get install -y python3
COPY . /app/ 
CMD ["python3", "/app/app.py"]

Здесь мы берем базовый образ ubuntu, устанавливаем python, копируем код приложения и задаем команду для запуска.

Чтобы собрать образ из Dockerfile, запускаем:

docker image build -t myimage .

Готово! Теперь можно запустить контейнер из этого образа.

Итог

Docker очень удобно использовать для разработки и тестирования проектов с анализом данных. Например, ты можешь создать контейнеры для Jupyter Notebook, PostgreSQL и веб-приложения.

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

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

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