- 69
- 36
Доброго времени суток!
Решил сделать серию гайдов по Docker, где мы установим его, научимся писать Dockerfile и разберём, что такое docker-compose. Мы научимся работать с точками монтирования «volume» и поднимем с помощью технологии контейнеризации веб-приложение с прокси-сервером nginx, Python в роли API-интерфейса и Vue.js на фронте.
Что такое Docker?
Docker — это обширное программное обеспечение для запуска приложений в отдельных изолированных контейнерах.
Из чего состоит Docker?
Docker состоит из:
Решил сделать серию гайдов по Docker, где мы установим его, научимся писать Dockerfile и разберём, что такое docker-compose. Мы научимся работать с точками монтирования «volume» и поднимем с помощью технологии контейнеризации веб-приложение с прокси-сервером nginx, Python в роли API-интерфейса и Vue.js на фронте.
Что такое Docker?
Docker — это обширное программное обеспечение для запуска приложений в отдельных изолированных контейнерах.
Из чего состоит Docker?
Docker состоит из:
- CLI (по желанию можно установить графический интерфейс);
- Образов, или как их принято называть «Images»;
- Контейнеров;
- Площадки, где размещаются все образы «Docker Hub».
Какие приемущества Docker и чем технология контейнеризации отличается от виртуализации?
Многие, наверное, уже знакомы с технологией виртуализации — когда мы делим физические ресурсы компьютера между созданными с помощью гипервизора виртуальными машинами. Контейнеризация — это создание контейнеров на основе заранее созданных образов. В контейнере помимо самого приложения хранятся зависимости, при которых работает наше приложение.
В некоторой степени контейнеризация удобнее чем виртуализация. Допустим мы имеем приложение, которое нужно поднять на 40-ка серверах-воркерах, которые обрабатывают действия пользователей. Нам нужно накататить систему на 40 серверов, настроить её, скачать все зависимости, скачать нужное приложение, запустить и настроить. А что если разработчик написал приложение и ставит на сервер его уже совсем другой человек? Очевидно, что он будет иметь трудности с таким большим объёмом работ.
Docker позволяет разработчику написать Dockerfile (в некоторых случаях docker-compose.yml), в котором он опишет приложение и дополнительные сервисы, которые нужны для работы приложения, произведёт всю настройку приложения, задаст нужные параметры и сохранит это всё в образ, который в будущем будет запущен всего одной командой.
Docker так-же имеет и другие приемущества по отношению к ПО виртуализации:
Многие, наверное, уже знакомы с технологией виртуализации — когда мы делим физические ресурсы компьютера между созданными с помощью гипервизора виртуальными машинами. Контейнеризация — это создание контейнеров на основе заранее созданных образов. В контейнере помимо самого приложения хранятся зависимости, при которых работает наше приложение.
В некоторой степени контейнеризация удобнее чем виртуализация. Допустим мы имеем приложение, которое нужно поднять на 40-ка серверах-воркерах, которые обрабатывают действия пользователей. Нам нужно накататить систему на 40 серверов, настроить её, скачать все зависимости, скачать нужное приложение, запустить и настроить. А что если разработчик написал приложение и ставит на сервер его уже совсем другой человек? Очевидно, что он будет иметь трудности с таким большим объёмом работ.
Docker позволяет разработчику написать Dockerfile (в некоторых случаях docker-compose.yml), в котором он опишет приложение и дополнительные сервисы, которые нужны для работы приложения, произведёт всю настройку приложения, задаст нужные параметры и сохранит это всё в образ, который в будущем будет запущен всего одной командой.
Docker так-же имеет и другие приемущества по отношению к ПО виртуализации:
- Быстрое развёртывание (деплой) приложения;
- Меньшее потребление ресурсов;
- Легкость в управлении зависимостями;
- Упрощенная масштабируемость;
- Интеграция с CI/CD процессами.
Установка Docker и начало работы с ним
Процесс установки на Linux Ubuntu Server 22.04:
Используем sudo snap install docker
После установки используем sudo docker info
Установка для Windows проходит через обычный инсталлер. Найти его можно на официальном сайте
Проверим, работает ли Docker так как должен. Используем следующую команду для запуска тестового контейнера.
sudo docker run -d -p 80:80 docker/getting-started
Что мы сейчас сделали? Мы скачали официальный образ getting started от разработчиков docker используя всего одну команду и развернули веб приложение, которое было написано совсем другим разработчиком. В аргументах команды, которую мы использовали, мы указали, что контейнер запустится detached (флаг -d) — то есть мы не увидим всех действий, которые производятся в контейнере. Флаг -p 80:80 означает, что внутри контейнера будет проброшен порт 80 на порт 80 нашего сервера.
Если вы запускаете это приложение на своем компьютере, то перейдя на localhost вы увидите страницу docker.
В следующих уроках мы изучим все основные команды Docker, разберём написание Dockerfile и docker-compose.yml.
Последнее редактирование: