
Цель урока: Глубоко понять, как работает Docker, чем он отличается от виртуальных машин, научиться искать образы в Docker Hub и разбираться в версиях (тегах) программного обеспечения.
Часть 1: Главная проблема - "У меня всё работает"
Представьте ситуацию. Вы - разработчик, и вы настроили сервер для сайта.
-
Установили Ubuntu 22.04.
-
Поставили Python 3.10.
-
Установили библиотеку pandas версии 1.4.
-
Настроили конфиг в /etc/app/config.conf.
Всё работает. Но через месяц вам нужно перенести этот сайт на другой сервер. Или к вам пришел новый коллега, и ему нужно запустить этот сайт на своем MacBook.
Проблема: На новом месте другая версия Linux, Python версии 3.8 (и обновляться нельзя, потому что там работают другие программы), а конфиг вообще лежит в другой папке.
Итог: Сайт падает. Вы тратите 3 дня на "подгонку" окружения. Это называется Dependency Hell (Ад зависимостей).
Решение Docker:
Docker позволяет упаковать всё перечисленное (код, Python, библиотеки, конфиги, кусочек операционной системы) в один файл-архив. Вы передаете этот файл коллеге, он запускает его одной командой, и у него всё работает гарантированно так же, как у вас.
Часть 2: Контейнеры против Виртуальных машин
Многие новички думают: "Так это же просто Виртуалка!". Нет, и это критически важно понять.
Давайте сравним их на примере жилья:
| Характеристика | Виртуальная машина (VM) | Контейнер (Docker) |
| Аналогия | Частный дом. У него свой фундамент, свои стены, своя крыша, свой водопровод. | Квартира в доме. Фундамент и водопровод общие (от дома), но стены свои. |
| Ядро (Основа) | У каждой VM своё ядро ОС. Это полноценная Windows или Linux внутри другой системы. | Все контейнеры используют общее ядро хост-системы (вашего сервера). |
| Вес | Тяжелая. Образ весит гигабайты (например, 10 Гб). | Легкий. Образ весит мегабайты (например, 50-200 Мб). |
| Время старта | Минуты (надо загрузить всю ОС с нуля). | Миллисекунды (процесс просто запускается). |
| Изоляция | Полная. Одна VM не видит другую. | Достаточная. Процессы изолированы, но ядро общее. |
Вывод: На одном сервере средней мощности можно запустить 3-4 виртуальные машины, и они "съедят" всю память. На том же сервере можно запустить сотни Docker-контейнеров.
Часть 3: Словарь Docker (База знаний)
Эти 4 термина нужно знать наизусть:
-
Image (Образ) - Это шаблон (или чертеж). Он неизменяемый. В нем записано, что должно быть внутри.
-
Пример: Установочный диск Windows или класс в программировании.
-
-
Container (Контейнер) - Это запущенная копия образа. В нем "живет" программа. Контейнеров из одного образа можно сделать сколько угодно.
-
Пример: Установленная и работающая Windows или объект класса.
-
-
Dockerfile - Это текстовая инструкция для создания образа.
-
Пример: Кулинарный рецепт, по которому Docker печет пирог (Образ).
-
-
Registry (Реестр) - Хранилище образов в интернете. Самый главный - Docker Hub.
Часть 4: Принцип "Слоенного пирога"
Это то, что делает Docker гениальным. Образ Docker - это не один большой файл, это "слоеный пирог".
Допустим, вы хотите сделать образ для своего сайта:
-
Слой 1: Вы берете базовую Ubuntu (Docker качает её один раз).
-
Слой 2: Вы ставите туда Nginx.
-
Слой 3: Вы кладете туда свой сайт.
Если вы захотите сделать второй сайт, который тоже работает на Nginx, Docker не будет качать Ubuntu и Nginx заново. Он увидит, что эти слои уже есть на диске, и просто использует их повторно, добавив сверху только новый слой с вашим вторым сайтом. Это экономит гигабайты места и время.
Часть 5: Практика в браузере (Docker Hub)
Мы пока не ставим Docker, но мы должны научиться находить программы для него. Docker Hub - это как "Google Play" или "App Store", но для серверов.
Задание:
-
Откройте в браузере сайт hub.docker.com.
-
В строке поиска введите nginx.
-
Нажмите на первый результат (обычно он помечен значком Docker Official Image).
На что смотреть:
В Docker Hub есть вкладка Tags (Теги). Это версии.
Когда вы говорите Docker: "скачай мне nginx", Docker по умолчанию ищет тег :latest (последняя версия).
Но в серьезной работе (Production) использовать latest опасно. Сегодня "последняя" версия - стабильная, а завтра выйдет новая, которая сломает ваш конфиг.
Поэтому мы всегда указываем конкретную версию, например: nginx:1.23.
-
Alpine версии: Вы часто увидите теги типа nginx:alpine. Alpine Linux - это сверхлегкая версия Linux (весит всего 5 Мб!). Если вам не нужны сложные инструменты внутри контейнера, всегда старайтесь выбирать образы на базе Alpine.
Часть 6: Подготовка вашего сервера
Перед следующим уроком давайте убедимся, что ваш Linux готов принять Docker на борт.
Зайдите на сервер по SSH и выполните две команды.
1. Проверка разрядности системы:
Нам нужна 64-битная система.
uname -m
Если ответ x86_64 - отлично.
2. Проверка свободного места:
Образы и контейнеры занимают место. Проверьте, что у вас есть хотя бы 3-4 ГБ свободного места.
df -h /
Смотрите колонку Avail (Доступно).
Часть 7: Резюме
Сегодня мы разобрали теорию, которая отличает профессионала от "эникейщика":
-
Контейнер - это не виртуалка, он использует ядро вашего сервера.
-
Образ (Image) - мертвый шаблон, Контейнер (Container) - живой процесс.
-
Слои позволяют экономить место, переиспользуя общие части (например, Linux и библиотеки).
-
Теги (Tags) - это версии образов. В продакшене мы используем конкретные цифры, а не latest.
В следующем, 61-м уроке, мы установим Docker Engine, запустим классический "Hello World", а затем поднимем настоящий веб-сервер Nginx внутри изолированного контейнера за 30 секунд. Готовьте терминалы!
Перейти к просмотру - УРОК №61.
Промо-код: PROMO15 - скидка 15%!
Введите при оформлении первого заказа на сайте: Hosting-VDS.com


