Docker & Containers

docker runПодготовьте команду запуска

Укажите образ и нужные привязки, затем проверьте команду для оболочки POSIX.

docker run

Параметры операции

Порты

Монтирования

Переменные окружения

Предпросмотр команды

docker run \
  --detach \
  'nginx:alpine'

Вывод для POSIX sh в macOS, Linux или WSL. Пути передаются буквально; переменные и ~ не раскрываются.

Настройки обрабатываются в этом браузере. Нет подключения к Docker, запросов к реестру и выполнения команд.

Параметры

До 20 строк в группе. CPU: 0.001–1024. Память: целое b/k/m/g, минимум 6 МиБ; пусто — не задано.

Предпросмотр актуален.

При сборке команды из нескольких примеров легко перепутать путь хоста с каталогом контейнера или оставить ненужный порт. Форма docker run разделяет эти параметры, чтобы каждое решение можно было проверить до переноса команды в терминал.

Исходная настройка — nginx:alpine в фоновом режиме, без публикации портов и ограничений ресурсов. Пустые параметры пропускаются. Используются точка входа и команда самого образа: инструмент не придумывает пароли, каталоги и требования приложения.

Зачем собирать docker run по отдельным полям

Сначала параметры, затем кавычки

В docker run порты хоста и контейнера, источники монтирования и значения переменных становятся отдельными аргументами. Пробелы и апострофы в путях сохраняются благодаря экранированию. При любом изменении старый результат сразу теряет актуальность и его нельзя экспортировать.

Строки образа, портов и монтирований соединяются в предварительный просмотр команды.

Проверка доступа перед копированием

Привилегированный режим, чувствительные пути и публикация вне loopback отмечаются предупреждениями. Значения ENV изначально скрыты и в полях, и в команде. Полный экспорт становится доступен после явного включения показа значений. Маска влияет на отображение, а не шифрует данные.

Скрытые переменные и недоступный экспорт рядом с предупреждениями о привилегиях и монтировании хоста.

Три решения перед запуском

01

Выберите адрес хоста

Новая строка порта использует 127.0.0.1 и TCP. Пустой адрес означает все интерфейсы, а не автоматический выбор закрытой сети. Внутренний порт должен совпадать с портом службы в образе; изменение внешнего номера не перенастраивает приложение.

02

Отличайте путь от именованного тома

Для абсолютного пути на хосте Docker выберите bind, для хранилища под управлением Docker — volume. Новое монтирование доступно только для чтения. Если приложению нужна запись, отключите этот режим осознанно и проверьте источник и назначение.

03

Объединяйте правки в ручном режиме

Автоматическое обновление ждёт 350 мс после последней правки. Его можно отключить и запускать сборку кнопкой или Ctrl/Cmd+Enter. Пример, очистка и удаление строки сначала показывают предварительный просмотр. Однократная отмена восстанавливает поля и результат.

Что задают аргументы

Явная публикация портов

Каждая строка создаёт --publish с IPv4, портом хоста, портом контейнера и TCP либо UDP. Перекрывающиеся привязки одного порта и протокола отклоняются. TCP и UDP могут использовать одинаковый номер. Занятость порта другими процессами хоста форма не проверяет.

Два вида хранения

Bind-монтирование связывает файл или каталог хоста с контейнером, а именованный том управляется Docker. --mount явно задаёт тип и при необходимости readonly. Одинаковые нормализованные пути назначения запрещены, чтобы одна строка не скрывала другую привязку.

Переменные окружения без подстановок

Пробелы, знаки равенства, апострофы и доллары сохраняются внутри одного аргумента. Пустое значение выводится как KEY=. Повтор имени вызывает ошибку. Инструмент не читает окружение хоста и не раскрывает $HOME или конструкции подстановки команд.

Жизненный цикл и ресурсы

Настраиваются имя, фоновый режим, интерактивный терминал, удаление при выходе, перезапуск, CPU и память. --rm несовместим с политикой перезапуска, отличной от no. Пустые лимиты не добавляют аргументов, а заданное значение не означает резервирование ресурсов.

Поддерживаемые формы и ограничения

Одна команда для POSIX
Вывод рассчитан на POSIX sh в Linux, macOS или WSL и пути контейнеров Linux. Не поддерживаются PowerShell, CMD, импорт старых команд, Compose, Dockerfile, произвольные флаги и замена команды запуска. Обращений к Docker и реестру образов нет.
Ограниченная запись образов и портов
Принимается путь репозитория в нижнем регистре, необязательный DNS- или IPv4-реестр с портом, тег и digest sha256. IPv6-реестры, отдельные ID образов и другие алгоритмы исключены. Порты — целые числа от 1 до 65535, без диапазонов, случайного назначения, IPv6-привязки и SCTP.
Однозначные пути монтирования
Источник bind должен быть абсолютным; назначение тоже, но не корнем. Запятые, двойные кавычки, обратные косые черты, управляющие символы и сегменты . или .. запрещены. Пробелы и апострофы сохраняются. Имя тома — 2–255 букв, цифр, точек, подчёркиваний или дефисов, с буквой либо цифрой в начале.
Пределы размера и чисел
В каждой группе максимум 20 строк. Одно текстовое поле ограничено 4096 единицами UTF-16, сумма — 65536. CPU допускает 0.001–1024 и до трёх десятичных знаков. Память задаётся целым числом с необязательным b/k/m/g, минимум 6 МиБ, максимум — знаковое 64-битное число байтов. Превышение вызывает ошибку, а не обрезку.
Маска не заменяет хранилище секретов
Пока значения ENV скрыты, копирование и скачивание содержащего их результата недоступны. После показа экспорт включает настоящие значения; они могут попасть в историю оболочки или быть видны при инспекции контейнера. Имена переменных и пути автоматически секретами не считаются.
Предупреждения не проверяют хост
Отмечаются корневые, системные и пользовательские каталоги, но символические ссылки не разрешаются. Даже Docker socket только для чтения требует проверки. Существование файлов, права, содержимое образа и поддержку лимитов ядром нужно выяснять на реальной машине.

Вопросы о docker run

Как передать переменные окружения в контейнер Docker?

Добавьте имя и значение в строку ENV: она станет отдельным аргументом --env при запуске контейнера. Это настройка времени запуска, а не изменение Dockerfile или этапа сборки. Чтение файла .env не поддерживается. Чтобы скопировать результат с переменными, сначала разрешите показ значений.

Почему Tomcat в Docker не работает после смены порта?

Различайте порт на хосте и порт, который слушает Tomcat внутри контейнера. Если приложение слушает 8080, изменение внешнего порта не меняет этот внутренний номер. Укажите его в поле порта контейнера, выберите свободный порт хоста и проверьте адрес прослушивания приложения и сетевые правила.

Как передать Docker переменную окружения с пробелами?

Введите значение без дополнительных кавычек оболочки. Весь аргумент KEY=value будет заключён в кавычки, поэтому пробелы и равенства сохранятся. $HOME останется буквальным текстом. Переводы строк и управляющие символы отклоняются.

Можно ли задать --rm и --restart в Dockerfile?

Это параметры запуска контейнера, а не инструкции Dockerfile. Для перезапуска службы отключите удаление при выходе. Для временного контейнера с --rm оставьте политику no. Несовместимая комбинация блокирует генерацию, а не исправляется незаметно.

Чем тома Docker отличаются от bind mounts?

Именованный том управляется Docker, а bind указывает на конкретный путь хоста. При разрешённой записи контейнер может менять файлы хоста. Для --mount отсутствующий bind-источник обычно означает ошибку запуска; эта страница не может проверить наличие каталога.

Предпросмотр отличается от документации Docker?

Проверьте результат перед копированием

Соберите docker run, устраните ошибки и прочитайте предупреждения. Перед экспортом уточните настройки хоста, на котором команда будет запущена.