Превратите команды docker run в compose.yaml: порты, тома, сети, health checks
Работает в вашем браузере. Ничего из того, что вы вводите, никуда не отправляется. Проверено 16 октября 2026 г..У каждого флага docker run есть ключ Compose. Образ остаётся image, а 5 распространённых флагов переносятся напрямую: -p становится ports, -e — environment, -v — volumes, --restart — restart, а --name — container_name, тогда как -it соответствует stdin_open и tty. У флагов вроде -d и --rm нет аналога, поскольку docker compose up -d и так запускает сервисы в фоне.
Эта страница переведена машинным способом с английского оригинала. Перевод ещё не проверен человеком, поэтому ориентируйтесь на английскую версию. Читать английский оригинал
Вставьте одну или несколько команд docker run, вместе с переносами строк через обратную косую черту, или нажмите Попробовать пример.
Посмотрите compose.yaml справа: один сервис на команду, тома и сети объявлены внизу.
Проверьте примечания о флагах без аналога в Compose, например --rm.
Нажмите Скачать, чтобы сохранить compose.yaml, затем выполните docker compose up -d в той же папке.
Рабочая команда docker run — лучшая отправная точка для файла Compose, но переписывать 10 флагов вручную — значит рисковать ошибками. Вставьте команду или несколько и получите compose.yaml с отдельным сервисом для каждой, по Compose Specification, чтобы он работал с docker compose up -d.
| docker run | compose.yaml |
|---|---|
--name web |
container_name: web |
-p 8080:80 |
ports: ["8080:80"] |
-e KEY=value |
environment: ["KEY=value"] |
-v data:/data |
volumes: плюс data: верхнего уровня |
--network shop-net |
networks: плюс shop-net: external: true |
--restart unless-stopped |
restart: unless-stopped |
-it |
stdin_open: true, tty: true |
--gpus all |
deploy.resources.reservations.devices |
Что распознаётся. Более 70 флагов docker run во всех написаниях, которые принимает Docker CLI: --flag value, --flag=value, -p80:80 и сгруппированные короткие флаги вроде -it или -dp 3000:3000. Команды, разбитые на строки с помощью \ (bash), ^ (cmd) или ` (PowerShell), склеиваются, кавычки читаются так, как их читает оболочка, а $(pwd) в томе становится ./, потому что Compose разрешает пути от папки файла Compose.
Несколько команд сразу. Вставьте целый скрипт установки: каждый docker run становится сервисом, другие команды, например docker network create, пропускаются, а сервисы с одним образом получают разные имена.
Ничего не скрыто. Флаги без аналога в Compose, такие как --rm и -d, и любые флаги, неизвестные инструменту, перечисляются под результатом, а не исчезают. Порты и значения окружения заключены в кавычки, чтобы ни один парсер YAML не принял 22:22 за число. В файле нет ключа version:, который Compose Specification объявила устаревшим.
Всё работает в вашем браузере; вставленные команды, в которых часто есть пароли, никуда не отправляются.
Задайте каждому флагу его ключ Compose внутри сервиса: образ как image, -p как ports, -e как environment, -v как volumes, --name как container_name и --restart как restart. Именованные тома и собственные сети также получают запись верхнего уровня. Если вставить команду сюда, будет сформирован весь compose.yaml, готовый для docker compose up -d.
Флаг -i становится stdin_open: true, а -t — tty: true, так что -it задаёт оба. У флага -d нет ключа, потому что docker compose up -d запускает все сервисы в фоне. Чтобы позже подключиться к работающему сервису, используйте docker compose attach или docker compose exec с именем сервиса.
В файле — ничего: сервисы Compose рассчитаны на постоянную работу, поэтому ключа, удаляющего контейнер при остановке, нет. Для разовой задачи выполните docker compose run --rm с именем сервиса — этот контейнер будет удалён после завершения. Примечание под результатом сообщает, когда --rm был опущен.
docker run с --network shop-net использует уже существующую сеть. Пометка external говорит Compose подключиться к этой сети, а не создавать свою, чтобы контейнеры, запущенные обоими способами, по-прежнему могли общаться. Если вы хотите, чтобы Compose сам создал сеть и управлял ею, удалите строку external: true.
Да, записывайте порты как строки, например "8080:80". Некоторые парсеры YAML считают два числа через двоеточие числом в шестидесятеричной системе, так что 22:22 может превратиться в 1342 и сломать проброс SSH. Этот инструмент заключает в кавычки каждый порт, каждую переменную окружения и каждую строку тома, чтобы файл везде означал одно и то же.
Нет. Compose Specification объявила ключ version: устаревшим, и последние версии docker compose выдают предупреждение, если он есть. Файлы, созданные здесь, начинаются сразу с services:, за которым следуют volumes: и networks:, если команды используют именованные тома или собственные сети.
Ставки и правила меняются; проверьте источник, прежде чем полагаться на цифру.
Всё ещё не получается? Задайте вопрос об инструменте «Конвертер docker run в docker compose» и ответить может любой, кто знает. Учётная запись не нужна.