Docker для начинающих: что это такое, как установить и основные команды Docker
В последние годы Docker стал одним из главных инструментов для разработчиков и системных администраторов. Практически любое современное приложение — от небольшого сайта на Laravel до сложной микросервисной архитектуры — можно запустить в Docker.
Если раньше настройка сервера могла занимать часы, то сегодня достаточно выполнить несколько команд, чтобы развернуть готовое окружение с PHP, MySQL, Redis, Nginx и другими сервисами.
В этой статье разберем, что такое Docker, как он работает, чем отличается от виртуальной машины, как установить Docker на Ubuntu и рассмотрим основные команды, которые используются каждый день.
Что такое Docker
Docker — это платформа для запуска приложений в изолированных контейнерах.
Контейнер содержит все необходимое для работы программы:
операционную среду;
библиотеки;
зависимости;
настройки;
само приложение.
Благодаря этому приложение будет работать одинаково независимо от того, запускаете вы его на локальном компьютере, тестовом сервере или в облаке.
Почему Docker стал настолько популярным
До появления Docker разработчики часто сталкивались с проблемой:
«У меня всё работает, а на сервере — нет».
Причина обычно заключалась в различиях между окружениями:
разные версии PHP;
разные версии MySQL;
отсутствующие библиотеки;
несовместимые настройки.
Docker решает эту проблему, позволяя запускать приложение в одинаковом окружении на любом сервере.
Контейнеры и образы
Чтобы понять Docker, важно различать два основных понятия.
Образ (Image)
Образ — это шаблон, из которого создаются контейнеры.
Например:
Ubuntu;
Nginx;
MySQL;
Redis;
PHP 8.4;
Node.js.
Образы скачиваются из Docker Hub или других реестров.
Контейнер (Container)
Контейнер — это уже запущенный экземпляр образа.
Можно создать несколько контейнеров из одного образа.
Например:
один контейнер MySQL;
один контейнер Redis;
один контейнер Nginx;
один контейнер Laravel.
Все они будут работать независимо друг от друга.
Чем Docker отличается от виртуальной машины
Многие новички путают Docker с VirtualBox или VMware.
Главное отличие заключается в том, что Docker использует ядро операционной системы хоста и не запускает полноценную гостевую ОС для каждого приложения.
Docker | Виртуальная машина |
|---|---|
Использует ядро хостовой ОС | Запускает отдельную ОС |
Быстрый запуск (секунды) | Запуск занимает минуты |
Минимальное потребление памяти | Требует больше ресурсов |
Легко масштабируется | Более сложна в управлении |
Где используется Docker
Сегодня Docker применяется практически везде:
Laravel;
Symfony;
Django;
Node.js;
Go;
Java;
WordPress;
GitLab CI/CD;
Kubernetes;
VPN-панели;
микросервисные приложения.
Практически любой современный сервер можно полностью развернуть в Docker.
Установка Docker на Ubuntu 24.04
Сначала обновите систему:
sudo apt update
sudo apt upgrade -y
Установите необходимые пакеты:
sudo apt install ca-certificates curl gnupg lsb-release -y
Добавьте официальный репозиторий Docker:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg
Добавьте репозиторий:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list
Установите Docker:
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
Проверьте установку:
docker --version
Например:
Docker version 28.x.x
Проверка работы Docker
Выполните тестовый контейнер:
docker run hello-world
Если всё настроено правильно, Docker выведет приветственное сообщение.
Основные команды Docker
Просмотр версии
docker --version
Список работающих контейнеров
docker ps
Показать все контейнеры
docker ps -a
Список образов
docker images
Скачать образ
Например Ubuntu:
docker pull ubuntu
Или MySQL:
docker pull mysql:8.4
Запустить контейнер
docker run ubuntu
Запуск в фоновом режиме:
docker run -d nginx
Остановить контейнер
docker stop container_id
Запустить остановленный контейнер
docker start container_id
Перезапустить контейнер
docker restart container_id
Удалить контейнер
docker rm container_id
Принудительное удаление
docker rm -f container_id
Удалить образ
docker rmi image_name
Просмотр логов
docker logs container_id
Следить за логами в режиме реального времени:
docker logs -f container_id
Подключиться к контейнеру
docker exec -it container_id bash
Для Alpine Linux:
docker exec -it container_id sh
Использование ресурсов
docker stats
Будет показано:
загрузка CPU;
использование памяти;
сетевой трафик;
использование диска.
Информация о системе Docker
docker info
Очистка неиспользуемых ресурсов
Удалить остановленные контейнеры:
docker container prune
Удалить неиспользуемые образы:
docker image prune
Полная очистка:
docker system prune -a
Внимание: эта команда удалит все неиспользуемые контейнеры, сети, образы и кэш.
Что такое Docker Compose
Если приложение состоит из нескольких сервисов, запускать каждый контейнер вручную неудобно.
Именно для этого используется Docker Compose.
Все сервисы описываются в одном файле:
services:
nginx:
image: nginx
php:
image: php:8.4-fpm
mysql:
image: mysql:8.4
redis:
image: redis
Теперь всё приложение можно запустить одной командой:
docker compose up -d
Полезные команды Docker Compose
Запустить проект:
docker compose up -d
Остановить проект:
docker compose down
Перезапустить сервисы:
docker compose restart
Посмотреть логи:
docker compose logs
Следить за логами:
docker compose logs -f
Посмотреть контейнеры проекта:
docker compose ps
Частые ошибки
Docker не запускается
Проверьте статус службы:
sudo systemctl status docker
Запустите сервис:
sudo systemctl start docker
Permission denied
Добавьте пользователя в группу Docker:
sudo usermod -aG docker $USER
После этого выйдите из системы и войдите снова.
Контейнер сразу завершается
Посмотрите журнал:
docker logs container_id
Чаще всего причина — ошибка конфигурации приложения или отсутствующие переменные окружения.
Советы по работе с Docker
Чтобы работа с Docker была стабильной и безопасной:
используйте официальные образы;
регулярно обновляйте Docker;
храните конфигурацию в Git;
используйте Docker Compose для проектов с несколькими сервисами;
не запускайте контейнеры с правами root без необходимости;
регулярно очищайте неиспользуемые образы и контейнеры.
Заключение
Docker значительно упрощает разработку, тестирование и развертывание приложений. Благодаря контейнерам разработчики получают одинаковое окружение на локальном компьютере и сервере, а администраторы — удобный способ управления сервисами и обновления инфраструктуры.
Если вы работаете с Laravel, PHP, Node.js, Python, VPN-панелями или любыми современными веб-приложениями, знание Docker уже давно стало не преимуществом, а необходимым навыком. Освоив базовые команды и принципы работы контейнеров, вы сможете быстрее разрабатывать проекты, проще переносить их между серверами и значительно сократить время на настройку окружения.