Какие основные флаги используются при запуске контейнера с помощью docker run?

Ответ

Команда docker run создает и запускает новый контейнер из образа. Для его конфигурации используются флаги. Наиболее важные из них:

  • --name <имя>: Присваивает контейнеру понятное имя для удобства управления.
  • -d или --detach: Запускает контейнер в фоновом (detached) режиме. Терминал освобождается, а контейнер продолжает работать.
  • -p <порт_хоста>:<порт_контейнера>: Пробрасывает порт с хост-машины на порт внутри контейнера. Например, -p 8080:80 сделает приложение, работающее на 80 порту контейнера, доступным по адресу localhost:8080.
  • -v <путь_на_хосте>:<путь_в_контейнере>: Монтирует директорию (volume) с хоста внутрь контейнера. Это позволяет сохранять данные даже после удаления контейнера или делиться файлами между хостом и контейнером.
  • -e <КЛЮЧ>=<ЗНАЧЕНИЕ>: Устанавливает переменную окружения внутри контейнера. Часто используется для передачи настроек, паролей или ключей API.
  • --rm: Автоматически удаляет контейнер после его остановки. Удобно для временных задач и скриптов.
  • --network <сеть>: Подключает контейнер к указанной Docker-сети, позволяя ему взаимодействовать с другими контейнерами в той же сети по именам.
  • --restart <политика>: Устанавливает политику перезапуска контейнера в случае его остановки или сбоя. Основные значения: no (по умолчанию), on-failure, unless-stopped, always.

Пример комплексной команды:

# Запускаем контейнер с базой данных PostgreSQL
docker run --name my-postgres -d 
  -e POSTGRES_PASSWORD=supersecret 
  -p 5432:5432 
  -v /my/local/data:/var/lib/postgresql/data 
  --restart unless-stopped 
  postgres:14

Эта команда:

  1. Создаст контейнер с именем my-postgres.
  2. Запустит его в фоновом режиме (-d).
  3. Установит пароль для суперпользователя через переменную окружения (-e).
  4. Сделает базу данных доступной на порту 5432 хоста (-p).
  5. Будет хранить все данные в локальной директории /my/local/data (-v).
  6. Настроит автоматический перезапуск, если он не был остановлен вручную (--restart).
  7. Использует официальный образ postgres версии 14.