Docker: теория и практика на примерах

с разработкой своих Docker образов:
- JavaSE консольное приложение
- SpringBoot backend
- Angular frontend (TypeScript)
- Микросервисы Spring Cloud + Gateway
- БД PostgreSQL с инициализацией

Ускорение разработки в несколько раз

Главная цель использования Docker - это ускорения на всех этапах разработки.

Благодаря готовым "образам" - вы не тратите время на установку нужного софта, а просто используете готовый функционал.

И на основе них создаете свои проекты и "образы" - далее их можно устанавливать на любую ОС быстро и легко.

Что такое Docker?

Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в средах с поддержкой контейнеризации. Позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который может быть развёрнут на любой ОС.

https://ru.wikipedia.org/wiki/Docker

Обязательные знания

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

Ускорение разработки приложений

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

Дистрибуция и распространение

Когда ваше приложение готово - вы сможете передать его заказчику и он сможет легко и быстро установить его на любую ОС (без вашего участия)

Архитектура Docker

Два главных термина Docker



Образ (image) - запечатанный функционал, который вы можете развернуть и использовать по своему усмотрению. Главное действующее лицо во всем Docker.

Контейнер (container) - готовый работающий образ, который можно запускать в любом количестве. Например, вы можете запустить несколько версий одной БД в разных контейнерах и тестировать свое приложение.

Виртуальные контейнеры

Если коротко, то Docker работает с помощью специальных виртуальных контейнеров на основе ОС Linux. Они запускаются быстрее и занимают меньше места.

Этот подход отличается от стандартных виртуальных машин, как было до этого.

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

Процесс разработки приложения
с применением Docker

1) Скачиваете готовые образы с интернета

В хранилище в интернете доступны образы на все случаи жизни и вам не нужно будет "изобретать колесо". Просто берете и используете готовые образы (БД, сервер приложений, чужие проекты и пр.)

2) Разрабатываете свой проект

Создаете все проекты согласно ТЗ, используя готовые образы Docker.

3) Распространение и дистрибуция

Создаете свои образы и отдаете их заказчику. Он сможет установить их на любую ОС.

"Я раньше никогда не пользовался Docker"

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

Будете экономить себе много времени при разработке и установке приложений.


Новый курс с созданием своим образов

Как создавать свои образы и использовать готовые наработки для создания разных типов приложений:
- JavaSE
- SpringBoot backend
- Angular frontend
- PostgreSQL
- Spring Cloud микросервисы 

Основные направления

Материалы будут полезны всем разработчикам и также администраторам DevOps

Фундамент и архитектура Docker

Основные возможности виртуализации, внутренние механизмы, термины и операции

Консольные команды

Все основные операции Docker  будете выполнять через консольные команды

Образы, контейнеры, слои

Работа с главными объектами Docker: скачивание, создание, настройка

Приложение Docker Desktop

Визуальный инструмент для новичков, чтобы начать работать с Docker

Создание слоев образа

Как строится образ из разных слоев, создание инструкций и просмотр системных слоев

Сохранение данных контейнера

Как правильно работать с БД и не потерять данные в любом приложении

Примеры на PostgreSQL образе

Использование готового образа БД для своих целей разработки, обращение через pgAdmin

Логирование Docker и контейнеров

При разработке всегда требуется смотреть логи контейнеров и самого Docker

Сервисы в Docker Compose

Запуск и настройка сразу нескольких контейнеров с помощью одного файла

Примеры на JavaSE приложении

Практика - как создавать образы для обычных JavaSE приложений. Это полезно для новичков, чтобы был максимально простой пример

Создание своих образов 

Как создавать свои образы и затем распространять для установки на любые машины

Добавление зависимостей в контейнеры

Создание образа приложения, у которого есть зависимости, библиотеки и пр.

Работа с Docker в IntelliJ IDEA

Для удобства - можно пользоваться IDEA и его плагином и все будет в одном месте - разработка, работа с Docker

Примеры на веб сервере NGINX

Простой пример для работы с готовым образом для новичков, создание веб файлов и проверка работы в браузере

Сетевые подключения контейнеров

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

Примеры на Angular + Spring

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

Публикация образа на Docker Hub

Распространение и доступ к своему образу через центральное хранилище Docker Hub

Best practices в Docker

Лучшие практики и советы при работы с образами и контейнерами Docker

Какая будет практика?

После того, как пройдете основную теорию, вы получите хорошую практику для новичков по разным видам проектов

Основные команды CLI

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

Это можно делать через командную строку или Docker Desktop.

Тренировка на простых образах

Чтобы понять фундамент работы с образами - сначала начнем скачивать и использовать - с сайта Docker Hub.

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

Java SE

Самый простой пример для новичков, как создавать свои образы на основе JavaSE приложения с зависимостями (библиотеками).

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

Spring Boot backend

Если вы разрабатываете серверные backend приложения, то должны научиться создавать Docker образы на основе SpringBoot приложений с RESTful сервисами.

Вы научитесь создавать свои образы и запускать контейнеры с настройками и зависимостями SpringBoot.

Spring Cloud микросервисы

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

Микросервис в одном контейнере, Gateway в другом и т.д.

Это очень удобно, особенно если вы публикуете приложение на облако, например Amazon (AWS) - легко и просто можно создать свои образы и разместить в любом онлайн облаке.

Angular frontend

Визуальная часть любого JS приложения, которое выполняет запросы в backend и получает оттуда результат.

Angular приложение также может работать в отдельном контейнере и обращаться по виртуальной сети в любые сервисы.

База данных PostgreSQL

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

Это полезно, если вы тестируете работу приложений в разных версиях БД одновременно.

IntelliJ IDEA

Для создания своих проектов - будете использовать среду разработки IntelliJ IDEA Ultimate Edition (можно версию trial).

Сначала разберем сами проекты и исходные коды по разным типам:
- JavaSE - консольное приложение
- SpringBoot backend
- Angular frontend
- Spring Cloud микросервисы

Будете использовать готовый плагин Docker для IDEA, который упрощает работу с образами и контейнерами.

Все исходные коды и docker образы сможете скачать и попробовать у себя.

Docker Desktop

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

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

Потом уже когда научитесь - перейдем к консольным командам.

Подробнее о Docker Desktop

Консольные команды CLI

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

Docker Desktop будете использовать только для элементарных действий (просмотр образов, контейнеров). Таким образом научитесь работать и с визуальным инструментом и с Docker CLI (command line interface)

Кому подойдет данный курс?

Всем разработчикам и также администраторам DevOps
(которым без этих знаний нет смысла идти дальше)

Разработчики

Сможете создавать образы на основе своих проектов, отправлять в центральное хранилище Docker Hub, либо просто устанавливать на любую ОС. В этом и есть преимущество Docker.

Тестировщики

Для быстро проверки и тестирования приложения - не нужно устанавливать весь софт, а просто сможете запускать готовые образы. Это сильно ускоряет разработку.

Админы

Если вы следите за ОС или установленными приложениями - то обязательно должны уметь работать с Docker, выполнять его основные команды.

Максимально простые примеры

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

Эти проекты потом сможете брать за основу - для своих проектов:
JavaSE, SpringBoot backend, Angular frontend, PostgreSQL, Spring Cloud микросервисы

Минимальные требования

Какие знания нужны, чтобы пройти этот курс

Желателен опыт разработки frontend и backend

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

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

Этот курс можно проходить с самого нуля, но ...

Были ученики, которые проходили курс и без знаний разработки. Им чуть сложнее, но все равно, они понимали суть, фундамент.

И начинали изучать программирование уже сразу с применением Docker - это тоже ускоряет обучение, т.к. не нужно вручную устанавливать весь софт.

Готовые проекты

Сами проекты (Spring, Angular, Cloud) вы с нуля тут разрабатывать не будете, потому что упор будет идти на Docker.

Создание проектов мы проходили в предыдущих курсах комплекта fullstack web.

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

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

ВОПРОСЫ

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

На этот курс - примерно неделя-две

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

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

Доступ к материалам и поддержке - неограничен. Можете изучать и возвращаться к урокам в любое время.

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

Задать вопрос

Отправить письмо

Стоимость

Выбирайте нужный комплект

Только этот
курс Docker

5000

рублей

  • Все материалы в личном кабинете
  • Поддержка по вопросам в любое время
  • Обновления и бонусные уроки по мере выхода
  • Телеграм группа
  • Видео и исходные коды
Весь fullstack web
(14 курсов)

от 10 000

рублей

  • Включает и этот курс
  • Обучение с самого нуля, начиная с ООП и Java
  • Все современные фреймворки для веб проектов
  • Время изучения - примерно полгода
  • Проекты для портфолио - можно показывать на собеседованиях
  • Все собрано в одном месте
  • Мышление программиста, которое нужно в любых проектах
Коучинг
(индив. занятия)

от 15 000

рублей

  • Личная поддержка на встречах
  • Личная поддержка через телеграм
  • Проверка и исправление кода (совместно)
  • Быстрая скорость изучения материалов
  • Запись доп. уроков по требованию для вас
  • Создание индив. плана обучения
  • Помощь в собеседованиях, анализ ответов и подготовка

Личный кабинет

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

© Copyright 2023 JavaBegin - Все права защищены
Служба поддержки  - Telegram ментора