Введение / Зачем это нужно
Docker позволяет запускать приложения в изолированных средах — контейнерах — без конфликтов зависимостей и сложной настройки окружения. Вы можете упаковать веб‑сервер, БД или микросервис в единый образ и разворачивать его на любой машине с Docker. Это ускоряет разработку, тестирование и деплой, а также делает инфраструктуру воспроизводимой.
В этом гайде вы освоите базовые команды для установки, запуска и управления контейнерами и образами.
Требования / Подготовка
- Сервер или ПК с Linux (Ubuntu 22.04/24.04, Debian 11+ или Fedora 36+).
- Пользователь с правами sudo.
- Открытые порты для проброса (если планируете публиковать сервисы наружу).
- Рекомендуется свежее ядро и актуальный пакетный менеджер.
Пошаговая инструкция
Шаг 1: Установить Docker
Установите Docker Engine и добавьте текущего пользователя в группу docker, чтобы не вводить sudo при каждой команде.
# Ubuntu / Debian
sudo apt update
sudo apt install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release && echo "$ID")/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/$(. /etc/os-release && echo "$ID") $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Добавить пользователя в группу docker
sudo usermod -aG docker $USER
Перезайдите в сеанс или выполните newgrp docker, чтобы применить права.
Шаг 2: Проверить версию и статус
Убедитесь, что клиент и сервер Docker работают корректно.
docker --version
docker info
Команда docker info покажет количество контейнеров, образов и статус демона. Если вывод выглядит осмысленно и без ошибок подключения — всё готово.
Шаг 3: Найти и скачать образ
Найдите нужный образ и загрузите его локально. Например, официальный образ NGINX или легковесный Alpine.
# Поиск образов (необязательно)
docker search nginx
# Загрузка образа
docker pull nginx:latest
docker pull alpine:latest
Образы хранятся локально и используются для запуска контейнеров. Вы можете иметь несколько версий одного образа одновременно.
Шаг 4: Запустить контейнер
Запустите контейнер с нужными параметрами. Ключи:
-d— работа в фоне (detached).-p— проброс портов, например8080:80.--name— понятное имя контейнера.
docker run -d -p 8080:80 --name web nginx:latest
Теперь веб‑сервер доступен по адресу http://localhost:8080. Чтобы запустить контейнер с интерактивным терминалом, используйте -it, например:
docker run -it --name shell alpine sh
Шаг 5: Управлять контейнерами
Следите за состоянием и управляйте жизненным циклом контейнеров.
# Список запущенных контейнеров
docker ps
# Все контейнеры (включая остановленные)
docker ps -a
# Остановить, запустить, перезапустить
docker stop web
docker start web
docker restart web
# Удалить контейнер
docker rm web
Если контейнер всё ещё работает, удалить его можно с ключом -f, но лучше сначала остановить.
Шаг 6: Управлять образами
Просматривайте локальные образы и удаляйте ненужные.
# Список образов
docker images
# Удалить образ (если нет запущенных контейнеров на его базе)
docker rmi nginx:latest
# Принудительное удаление
docker rmi -f nginx:latest
Чтобы освободить место от «висячих» образов (неназванных и неиспользуемых), используйте:
docker image prune
Проверка результата
Убедитесь, что контейнер работает и сервис доступен:
docker ps
curl -I http://localhost:8080
Вывод curl должен содержать HTTP/1.1 200 OK. Если контейнер не запущен, проверьте логи:
docker logs web
Возможные проблемы
- Ошибка доступа к сокету Docker — добавьте пользователя в группу
dockerи перезайдите в сеанс. - Порт уже занят — выберите другой порт в ключе
-p, например-p 8888:80. - Контейнер сразу завершается — проверьте команду запуска и логи. Для интерактивных контейнеров нужен
-it, а для демонов — точечный ENTRYPOINT или CMD. - Не хватает места — удалите неиспользуемые образы и контейнеры через
docker system prune.
С этими базовыми командами вы можете уверенно управлять контейнерами, тестировать сервисы и создавать воспроизводимые среды для разработки.