Все уроки | Уровень
ПРОФИ
0%
0 / 14

Видео урока скоро будет доступно

Бонусный модуль · ПРОФИ

Урок 13

Docker для изоляции
приложений

Установите Docker Desktop, упакуете свой сайт в контейнер вместе с Nginx и научитесь запускать его на любой системе без лишних настроек.

2 часа ПРОФИ

Цели урока

После этого урока вы:

  • Поймёте, что такое контейнеризация и зачем нужен Docker.
  • Установите Docker Desktop на свой компьютер.
  • Научитесь создавать Dockerfile для статического сайта.
  • Соберёте образ и запустите контейнер с вашим сайтом.
  • Поймёте, как Docker помогает в разработке и деплое.

Что нам понадобится

  • Компьютер с Windows, macOS или Linux.
  • Docker Desktop (бесплатная версия).
  • Ваш сайт (лендинг) как пример для контейнеризации.
  • Терминал (командная строка).

Совет: если Docker Desktop не устанавливается на Windows — включите виртуализацию в BIOS и WSL 2 (см. FAQ в вики курса).

Что такое Docker и зачем он нужен?

Docker — платформа для разработки, доставки и запуска приложений в изолированных средах, которые называются контейнерами.

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

Зачем это нужно?

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

Основные понятия Docker

ТерминЧто значит
Образ (Image)Шаблон, из которого создаются контейнеры. Содержит операционную систему, зависимости и код.
КонтейнерЗапущенный экземпляр образа. Изолированная среда для приложения.
DockerfileТекстовый файл с инструкциями по сборке образа.
Docker HubОблачный реестр, где хранятся и скачиваются готовые образы.
docker runКоманда, которая запускает контейнер из образа.

Образ — это рецепт, контейнер — готовое блюдо. Из одного образа можно создать множество контейнеров.

Как Docker работает со статическим сайтом?

Статический сайт — это просто HTML, CSS, JS файлы. Чтобы показать их в браузере, нужен веб-сервер (например, Nginx или Apache). Docker позволяет упаковать ваш сайт вместе с Nginx в один контейнер, который можно запустить на любом компьютере.

Это удобно:

  • Можно развернуть сайт на любом сервере с Docker.
  • Все зависимости (версия Nginx, конфигурация) зафиксированы в файле.
  • Не нужно настраивать веб-сервер каждый раз заново.

Итог: контейнер содержит и ваш сайт, и сервер — на любом компьютере он запустится одинаково.

Шаг 1. Установка Docker Desktop

1.1. Скачивание и установка

  1. Перейдите на docker.com/products/docker-desktop.
  2. Скачайте версию для вашей ОС (Windows, macOS, Linux).
  3. Запустите установщик и следуйте инструкциям.
  4. Запустите Docker Desktop (может потребоваться перезагрузка).

1.2. Проверка установки

Откройте терминал и выполните:

$ docker --version

Вы должны увидеть версию, например Docker version 24.0.6. Затем:

$ docker run hello-world

Docker скачает тестовый образ и запустит контейнер. Приветственное сообщение = установка успешна!

Шаг 2. Подготовка сайта для Docker

2.1. Структура проекта

Создайте папку для проекта, например my-docker-site. Внутри должны быть ваши файлы сайта:

my-docker-site/
├── index.html
├── style.css
├── script.js
└── images/
    └── logo.png

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

Шаг 3. Создание Dockerfile

Dockerfile — файл без расширения с инструкциями по сборке образа. Попросите AI сгенерировать его для статического сайта:

«Создай Dockerfile для статического сайта на основе Nginx: образ должен брать лёгкий nginx:alpine, копировать все файлы проекта в папку /usr/share/nginx/html, открыть порт 80 и запустить Nginx. Также создай файл .dockerignore, который исключает .git, *.md и .DS_Store.»

AI должен дать вам примерно такой Dockerfile:

FROM nginx:alpine
COPY . /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

Пояснение:

  • FROM nginx:alpine — лёгкий образ Nginx на основе Alpine Linux.
  • COPY . /usr/share/nginx/html — копирует файлы в папку, откуда Nginx раздаёт сайт.
  • EXPOSE 80 — контейнер слушает порт 80.
  • CMD — команда запуска Nginx внутри контейнера.

Шаг 4-5. Сборка образа и запуск контейнера

Шаг 4. Сборка образа

Откройте терминал в папке проекта (с Dockerfile) и выполните:

$ docker build -t my-site .

Флаг -t my-site задаёт имя образу, точка указывает, что Dockerfile лежит в текущей папке. Проверьте список образов:

$ docker images

Шаг 5. Запуск контейнера

$ docker run -d -p 8080:80 --name my-site-container my-site
  • -d — фоновый режим (detached).
  • -p 8080:80 — порт 80 контейнера пробрасывается на порт 8080 компьютера.
  • --name my-site-container — имя контейнера.
  • my-site — имя образа.

Откройте браузер: http://localhost:8080 — ваш сайт работает внутри контейнера!

Управление контейнером и деплой

Управление контейнером:

$ docker stop my-site-container
$ docker start my-site-container
$ docker rm my-site-container
$ docker ps       # запущенные контейнеры
$ docker ps -a    # все контейнеры, включая остановленные

Шаг 6 (опционально). Деплой на сервер через Docker Hub

  1. Зарегистрируйтесь на hub.docker.com и выполните docker login.
  2. Соберите образ с вашим логином: docker build -t ваш_логин/my-site .
  3. Загрузите образ: docker push ваш_логин/my-site

На сервере с Docker:

$ docker pull ваш_логин/my-site
$ docker run -d -p 80:80 --name my-site ваш_логин/my-site

Теперь сайт доступен по IP-адресу сервера!

Домашнее задание

  1. Установите Docker Desktop на свой компьютер.
  2. Создайте Dockerfile для своего лендинга (или любого другого сайта).
  3. Соберите образ и запустите контейнер локально.
  4. Проверьте, что сайт открывается по http://localhost:8080.
  5. Загрузите образ в Docker Hub (если есть аккаунт).
  6. Напишите инструкцию по запуску вашего сайта через Docker (в README.md).

Совет: полный чек-лист урока — в checklists-bonus.md, а готовые промпты — в prompts-bonus.md.

Что мы узнали за урок

  • Что такое Docker и контейнеризация.
  • Как установить Docker Desktop.
  • Как создавать Dockerfile для статического сайта.
  • Как собирать образ и запускать контейнер.
  • Как деплоить сайт через Docker на сервер.

Главный итог: теперь вы можете упаковать свой сайт в контейнер и запускать его на любой системе без лишних настроек. Это профессиональный способ развёртывания приложений! 🚀

Все уроки Поделиться результатом Следующий урок