Представь, что твоё приложение — это сложный конструктор. Раньше для его сборки на каждом компьютере требовалась точная инструкция и правильная версия деталей. Docker — это упаковщик, который кладёт весь конструктор вместе с инструкцией в одну коробку (контейнер). Теперь этот контейнер можно открыть и собрать на ЛЮБОМ компьютере, где есть Docker. Давай разберем, как этим пользоваться.
1. Установка и первые шаги с Docker Desktop
Начнём с основы. Docker Desktop — это графическое приложение, которое устанавливает всё необходимое для работы с Docker на твою локальную машину (Windows, macOS, Linux).
Проверка установки
Открой терминал и выполни команду для проверки версии. Это подтвердит, что Docker установлен и готов к работе.
docker --version
# Пример вывода: Docker version 24.0.7, build 24.0.7-ubuntu
Твоя первая команда: Запуск тестового контейнера
Давай убедимся, что всё работает. Запустим классический контейнер "hello-world".
docker run hello-world
Docker сначала скачает образ "hello-world" из реестра (Docker Hub), а затем создаст и запустит из него контейнер, который выведет приветственное сообщение. Если ты это видишь — поздравляю, Docker работает!
2. Основные команды Docker: Работа с образами и контейнерами
Вся работа в Docker строится вокруг двух сущностей: Образы (Images) — шаблоны, и Контейнеры (Containers) — запущенные экземпляры образов.
| Задача | Команда | Описание |
|---|---|---|
| Поиск образа | docker search nginx | Ищет образы в реестре Docker Hub |
| Скачать образ | docker pull nginx:alpine | Качает образ (тег `alpine` — облегчённая версия) |
| Запустить контейнер | docker run -d -p 8080:80 --name my-nginx nginx | -d — фон, -p — проброс порта, --name — имя |
| Список контейнеров | docker ps | Только активные. Добавь -a для всех. |
| Остановить контейнер | docker stop my-nginx | Корректная остановка |
| Удалить контейнер | docker rm my-nginx | Удаляет остановленный контейнер |
| Просмотр логов | docker logs -f my-nginx | -f — следить за логами в реальном времени |
3. Docker Compose как пользоваться для управления несколькими контейнерами
Когда твоё приложение состоит из нескольких сервисов (например, веб-сервер, база данных, кэш), управлять каждым контейнером отдельно неудобно. Docker Compose решает эту проблему. Он позволяет описать весь стек приложения в одном YAML-файле и управлять им одной командой.
Создаём docker-compose.yml
Создай файл `docker-compose.yml` в папке своего проекта. Вот пример для простого веб-приложения с WordPress и MySQL:
version: '3.8'
services:
db:
image: mysql:8.0
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: wordpress
MYSQL_USER: wpuser
MYSQL_PASSWORD: wppass
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: wppass
WORDPRESS_DB_NAME: wordpress
volumes:
- wp_data:/var/www/html
volumes:
db_data:
wp_data:
Основные команды Docker Compose
- docker-compose up -d — Запустить все сервисы в фоне.
- docker-compose down — Остановить и удалить контейнеры, сеть.
- docker-compose ps — Показать статус сервисов проекта.
- docker-compose logs -f wordpress — Показать логи конкретного сервиса.
- docker-compose exec db mysql -u root -p — Выполнить команду внутри запущенного контейнера (подключиться к MySQL).
После `docker-compose up -d` твой WordPress будет доступен по адресу http://localhost:8000. Всё — база данных, настройки, файлы — изолировано в томах (volumes) и будет сохраняться между перезапусками.
4. Как пользоваться Docker на Synology NAS
Synology DiskStation Manager (DSM) имеет встроенный графический интерфейс для Docker — Docker (Package Center) и Container Manager в новых версиях. Это отличный способ запускать домашние сервисы (Pi-hole, Plex, Nextcloud) без головной боли.
Пошаговая настройка
- Установи пакет "Docker" из Центра пакетов DSM.
- Открой Docker/Container Manager. Ты увидишь интерфейс, похожий на Docker Desktop: разделы "Образы", "Контейнеры", "Сети", "Тома".
- Скачай образ. Перейди в "Реестр", найди нужный образ (например, `linuxserver/plex`) и нажми "Загрузить". Выбери тег (лучше конкретный, а не `latest`).
- Запусти контейнер. В разделе "Образы" выбери скачанный образ и нажми "Запустить". Откроется мастер настройки:
- Имя контейнера: Придумай понятное имя.
- Автозапуск: Включи, чтобы контейнер стартовал при загрузке NAS.
- Тома (Volumes): Сопоставь папки на NAS с путями в контейнере. Например, `/docker/plex/config` → `/config`. Здесь хранятся твои данные.
- Порты (Ports): Пробрось порты. Например, 32400 (веб-интерфейс Plex).
- Переменные окружения (Environment): Укажи настройки, как PUID, PGID для правильных прав доступа к файлам.
- Примени настройки и запусти. Контейнер появится в списке с статусом "Выполняется".
Часто задаваемые вопросы (FAQ)
Чем отличается Docker Desktop от Docker Engine?
Docker Engine — это сервис (демон), который непосредственно создаёт и запускает контейнеры. Docker Desktop — это графическая оболочка для конечного пользователя, которая включает в себя Engine, CLI, Compose и удобный интерфейс для управления.
Мои данные в контейнере пропадают после перезапуска. Как сохранить?
Используй Тома (Volumes) или Bind Mounts. Они монтируют папку с твоего хоста (компьютера или NAS) внутрь контейнера. Данные будут сохраняться на хосте независимо от жизненного цикла контейнера. В команде это флаг `-v /путь/на/хосте:/путь/в/контейнере`.
Docker Compose и Dockerfile — это одно и то же?
Нет! Dockerfile — это инструкция по сборке ОДНОГО образа (как установить софт, скопировать файлы). docker-compose.yml — это инструкция по запуску и связыванию НЕСКОЛЬКИХ готовых образов (контейнеров) в единую сеть.
Безопасно ли запускать Docker на Synology для важных данных?
Да, если следовать best practices: используй официальные или проверенные образы (например, от `linuxserver/`), не запускай контейнеры от root (задавай PUID/PGID), регулярно обновляй образы, используй отдельные сети и томы для каждого сервиса, настраивай бэкапы томов через Hyper Backup.
Заключение
Ты прошёл путь от базовых команд Docker до оркестрации сервисов через Docker Compose и развертывания на Synology. Помни главное:
- Docker изолирует приложения, делая их переносимыми и консистентными.
- Docker Desktop — твой стартовый набор для локальной разработки.
- Docker Compose — мощный инструмент для описания многоконтейнерных приложений.
- Графический интерфейс Docker на Synology NAS делает его идеальной домашней платформой для сервисов.
Экспериментируй, начинай с простых контейнеров, изучай логи и не бойся удалять и пересоздавать. Удачи в контейнеризации!