Docker run: порты, переменные, тома, имя и автоудаление
Команда docker run создаёт и запускает контейнер из образа. Самые частые ключи: -d фоновый режим, --name имя, -p 8080:80 порт, -e переменная окружения, -v том, --rm удалить контейнер после остановки. Остальные команды управления собраны ниже.
Типичный запуск
docker run -d --name web -p 8080:80 -e APP_ENV=production -v web-data:/data --restart unless-stopped nginx:alpineЭта команда запускает nginx в фоне с именем web, публикует порт 80 контейнера на порту 8080 хоста, передаёт переменную, подключает том и перезапускает контейнер после сбоя и перезагрузки сервера.
Основные ключи
Ключ | Что делает |
|---|---|
| Запустить в фоне и вернуть управление |
| Задать имя вместо случайного |
| Порт хоста : порт контейнера |
| То же, но только для локального доступа |
| Переменная окружения |
| Переменные из файла |
| Подключить том |
| Подключить папку хоста |
| Рабочая папка внутри контейнера |
| Удалить контейнер после остановки |
| Интерактивный терминал |
| Политика перезапуска |
| Подключить к сети |
| Ограничить память и процессор |
Разовый контейнер
docker run --rm alpine echo "привет" # выполнить команду и удалить контейнер
docker run --rm -v "$(pwd)":/work -w /work alpine ls # работать с файлами текущей папки
docker run --rm -it python:3.13-slim python # интерактивный интерпретаторУправление контейнерами
docker ps # работающие контейнеры
docker ps -a # все, включая остановленные
docker stop web # остановить
docker start web # запустить снова
docker restart web # перезапустить
docker rm web # удалить остановленный
docker rm -f web # остановить и удалить
docker logs -f web # логи
docker exec -it web sh # зайти внутрь
docker inspect web # подробные сведения
docker stats --no-stream # потребление ресурсовОбразы
docker images # список образов
docker pull nginx:alpine # скачать
docker build -t my-app:1.0 . # собрать из Dockerfile в текущей папке
docker tag my-app:1.0 my-app:latest # добавить имя
docker rmi my-app:1.0 # удалить образПорты: частая путаница
Запись -p 8080:80 читается как «порт хоста 8080 соответствует порту контейнера 80». Порядок именно такой. Программа внутри контейнера должна слушать адрес 0.0.0.0, иначе соединения снаружи не пройдут.
docker port web # какие порты опубликованы
curl http://localhost:8080 # проверитьПолитики перезапуска
Значение | Поведение |
|---|---|
| Не перезапускать (по умолчанию) |
| Перезапускать при ошибке, не более трёх раз |
| Всегда, включая запуск службы Docker |
| Как |
Частые вопросы
Чем отличаются docker run и docker start?
docker run создаёт новый контейнер из образа и запускает его. docker start запускает уже существующий остановленный контейнер.
Почему контейнер сразу останавливается?
Главный процесс завершился. Посмотрите docker logs имя и убедитесь, что команда запуска не завершается сразу, например что процесс не работает в фоне внутри контейнера.
Как изменить настройки запущенного контейнера?
Порты, тома и переменные изменить нельзя. Удалите контейнер и создайте его заново с нужными ключами либо используйте Docker Compose.