Введение
Docker — это инструмент, который позволяет быстро создавать, доставать и запускать приложения в изолированных средах — контейнерах. В этой статье собраны базовые команды, которые потребуются новичку для повседневной работы с Docker. После выполнения шагов вы сможете запускать контейнеры, управлять ими и контролировать образы, которые их создают.
Требования / Подготовка
- Установленный Docker версии 20.10 или выше.
- Ubuntu:
sudo apt install docker.io - macOS/Windows: скачайте Docker Desktop с https://www.docker.com/products/docker-desktop и выполните установку.
- Ubuntu:
- Права на выполнение команд
docker, без пароля при необходимости добавьте пользователя в группуdocker(sudo usermod -aG docker $USER). - Минимум 2 ГБ свободного места для хранения образов и слоёв контейнеров.
Шаг 1: Установка Docker (проверка)
Убедитесь, что Docker установлен и доступен в системе.
docker --version
Если команда возвращает версию, установка прошла успешно. На Ubuntu вы можете установить Docker через пакетный менеджер:
sudo apt update
sudo apt install docker.io
После установки перезапустите сервис:
sudo systemctl restart docker
Шаг 2: Запуск первого контейнера
Запустите простой веб-сервер на основе образа Nginx. Команда ниже запускает контейнер в фоновом режиме, публикует порт 8080 хоста и назначает контейнеру имя web.
docker run -d -p 8080:80 --name web nginx
-d— запуск в фоновом режиме.-p 8080:80— публикация порта контейнера 80 на порт 8080 хоста.--name web— присвоение контейнеру удобного имени.
Проверьте, что контейнер запущен:
docker ps
Шаг 3: Просмотр запущенных контейнеров
Команда docker ps показывает только работающие контейнеры. Для просмотра всех контейнеров, включая остановленные, добавьте флаг -a:
docker ps -a
В выводе вы увидите столбцы CONTAINER ID, IMAGE, COMMAND, CREATED, STATUS и PORTS. Это помогает быстро находить нужные контейнеры по их имени или ID.
Шаг 4: Остановка контейнера
Когда контейнер больше не нужен (или для перезапуска), остановите его:
docker stop web
Статус контейнера изменится на Exited. Чтобы убедиться, выполните docker ps -a — состояние теперь будет exited.
Шаг 5: Удаление контейнера
Удалите остановленный контейнер. Удаление невозможно для работающего контейнера:
docker rm web
Docker окончательно удалит все данные контейнера. Используйте docker rm -v для удаления также связанных томов, если они созданы вами вручную.
Шаг 6: Управление образами
Образы — это шаблоны, из которых создаются контейнеры. Используйте следующие команды для их просмотра и удаления:
docker images
Показать только образы, которые не используются ни одним контейнером:
docker images --filter "dangling=true"
Удалите ненужный образ по его ID или имени:
docker rmi <image_name>
Например:
docker rmi nginx
Проверка результата
После выполнения всех шагов вы сможете:
- Быстро проверить установку Docker (
docker --version). - Запустить простой контейнер и опубликовать его порт на хосте.
- Перечислить работающие и остановленные контейнеры.
- Остановить, удалить контейнер и управлять образами.
Попробуйте выполнить команду docker exec web echo test (после запуска контейнера) — это покажет, как взаимодействовать с запущенным процессом внутри контейнера.
Возможные проблемы
- Docker не запускается после установки.
Проверьте статус сервиса:
sudo systemctl status docker. Если сервис не работает, перезапустите его:sudo systemctl restart docker. Убедитесь, что пользователь, через которого вы работаете, включён в группуdocker(sudo usermod -aG docker $USER), и выполните выход/вход или перезагрузите систему. - Ошибка «переадресация на неизвестный хост 127.0.0.1» при публикации порта.
Используйте правильный синтаксис
-p 8080:80(порт хоста:порт контейнера). Если нужно опубликовать все порты, опустите-pи используйте--publish-all. - Команда
docker rmне работает, так как контейнер работает. Сначала остановите контейнер (docker stop <name>), затем удалите его. Командаdocker rm -f <name>принудительно остановит и удалит контейнер, но данные будут потеряны. - Недостаточно места для хранения образов.
Проверьте свободное место командой
df -h. Удалите ненужные образы с помощьюdocker rmiили очистите кэш командойdocker system prune -a.