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
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 - что такое контейнеры, как создавать образы и запускать контейнеры. Я надеюсь, что теперь у тебя есть базовое понимание возможностей этой технологии.