Что такое Docker и зачем он нужен
12 минПроблема: "У меня работает!"
Представьте ситуацию: вы написали сайт на своём компьютере, всё работает. Отправляете коллеге — а у него не работает. Почему?
- Разные версии PHP
- Разные настройки сервера
- Не установлен какой-то модуль
- Другая операционная система
Раньше разработчики тратили часы на настройку окружения. Docker решает эту проблему.
Что такое Docker?
Docker — это программа, которая запускает приложения в контейнерах.
Что такое контейнер?
Представьте грузовой контейнер на корабле:
- Внутри него может быть что угодно — телевизоры, бананы, машины
- Снаружи все контейнеры выглядят одинаково
- Их легко перемещать с корабля на корабль, на поезд, на грузовик
- Содержимое изолировано и защищено
Docker-контейнер работает так же, только внутри — программы:
- Внутри контейнера — PHP, MySQL, или любая другая программа
- Контейнер содержит ВСЁ необходимое для работы программы
- Контейнер работает одинаково на любом компьютере
- Программа изолирована от вашей системы
Docker — это коробка, в которую мы кладём программу со всеми её зависимостями. Эту коробку можно запустить на любом компьютере, и программа будет работать одинаково.
Ключевые понятия
Образ (Image)
Образ — это "чертёж" контейнера. Готовый набор файлов и инструкций. Образы создают другие разработчики, а мы их скачиваем.
Примеры образов:
php:8.2— образ с PHP версии 8.2mysql:8.0— образ с MySQLnginx:latest— образ с веб-сервером Nginx
Контейнер (Container)
Контейнер — это запущенный образ. Если образ — это чертёж, то контейнер — это построенный по нему дом.
Из одного образа можно запустить много контейнеров.
Docker Hub
Docker Hub — это "магазин" образов. Там лежат тысячи готовых образов, созданных сообществом и компаниями. Мы будем скачивать образы оттуда.
Зачем нам Docker?
Для нашего блога нужно три программы:
| Программа | Зачем | Без Docker | С Docker |
|---|---|---|---|
| Apache + PHP | Веб-сервер и выполнение PHP | Скачать, установить, настроить конфиг, перезапустить... | Одна команда |
| MySQL | База данных | Скачать, установить, создать пользователя, настроить... | Одна команда |
| phpMyAdmin | Управление базой через браузер | Скачать, распаковать, настроить подключение... | Одна команда |
С Docker всё это запускается одной командой за 30 секунд.
Docker не засоряет систему
Всё, что работает в Docker, изолировано от вашего компьютера:
- Хотите удалить всё? Одна команда — и ничего не осталось
- Сломали настройки? Пересоздайте контейнер за секунды
- Нужна другая версия PHP? Просто укажите в настройках
Как будет работать наш проект
Мы создадим три контейнера:
┌─────────────────────────────────────────────────┐
│ Ваш компьютер │
│ │
│ ┌──────────────┐ ┌──────────┐ ┌───────────┐ │
│ │ Контейнер 1 │ │Контейнер2│ │Контейнер 3│ │
│ │ PHP+Apache │ │ MySQL │ │phpMyAdmin │ │
│ │ Порт 8080 │ │Порт 3306 │ │ Порт 8081 │ │
│ └──────────────┘ └──────────┘ └───────────┘ │
│ │ │ │ │
│ └────────────────┼──────────────┘ │
│ │ │
│ Общая сеть внутри Docker │
└─────────────────────────────────────────────────┘
В браузере:
localhost:8080— ваш сайтlocalhost:8081— phpMyAdmin
Что дальше?
В следующем уроке установим Docker Desktop. Это программа с графическим интерфейсом, которая управляет всей магией Docker.