Convierta comandos docker run en un compose.yaml: puertos, volúmenes, redes, health checks
Se ejecuta en su navegador. Nada de lo que escribe se envía a ningún sitio. Comprobado el 16 de octubre de 2026.Cada flag de docker run tiene una clave de Compose. La imagen sigue siendo image, y 5 flags comunes se traducen directamente: -p pasa a ser ports, -e pasa a ser environment, -v pasa a ser volumes, --restart pasa a ser restart y --name pasa a ser container_name, mientras que -it corresponde a stdin_open y tty. Flags como -d y --rm no tienen equivalente, ya que docker compose up -d ejecuta los servicios en segundo plano.
Esta página se ha traducido automáticamente del original en inglés. Ninguna persona ha revisado todavía la traducción, así que la versión en inglés es la que debe consultar. Leer el original en inglés
Pegue uno o más comandos docker run, con sus saltos de línea con barra invertida incluidos, o haga clic en Probar un ejemplo.
Lea el compose.yaml de la derecha: un servicio por comando, con los volúmenes y las redes declarados al final.
Revise las notas sobre flags que no tienen equivalente en Compose, como --rm.
Haga clic en Descargar para guardar compose.yaml y luego ejecute docker compose up -d en la misma carpeta.
Un comando docker run que funciona es el mejor punto de partida para un archivo Compose, pero reescribir 10 flags a mano invita a cometer errores. Pegue el comando, o varios, y obtenga un compose.yaml con un servicio por cada uno, conforme a la Compose Specification, para que funcione con 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: más un data: de nivel superior |
--network shop-net |
networks: más shop-net: external: true |
--restart unless-stopped |
restart: unless-stopped |
-it |
stdin_open: true, tty: true |
--gpus all |
deploy.resources.reservations.devices |
Qué se entiende. Más de 70 flags de docker run, en todas las formas que acepta la Docker CLI: --flag value, --flag=value, -p80:80 y flags cortos agrupados como -it o -dp 3000:3000. Los comandos partidos en varias líneas con \ (bash), ^ (cmd) o ` (PowerShell) se unen, las comillas se leen como las lee un shell, y $(pwd) en un volumen se convierte en ./, porque Compose resuelve las rutas desde la carpeta del archivo Compose.
Varios comandos a la vez. Pegue un script de instalación completo: cada docker run se convierte en un servicio, otros comandos como docker network create se omiten, y los servicios que comparten imagen reciben nombres distintos.
Nada oculto. Los flags sin equivalente en Compose, como --rm y -d, y cualquier flag que la herramienta no conozca se listan debajo del resultado en lugar de desaparecer. Los puertos y los valores de entorno van entre comillas, para que ningún lector de YAML tome 22:22 por un número. El archivo no tiene clave version:, que la Compose Specification declaró obsoleta.
Todo se ejecuta en su navegador; los comandos que pega, que a menudo contienen contraseñas, nunca se envían a ningún sitio.
Asigne a cada flag su clave de Compose dentro de un servicio: la imagen como image, -p como ports, -e como environment, -v como volumes, --name como container_name y --restart como restart. Los volúmenes con nombre y las redes personalizadas también reciben una entrada de nivel superior. Si pega aquí el comando, se genera el compose.yaml completo, listo para docker compose up -d.
El flag -i se convierte en stdin_open: true y -t en tty: true, así que -it activa ambos. El flag -d no tiene clave, porque docker compose up -d inicia todos los servicios en segundo plano. Para conectarse más tarde a un servicio en ejecución, use docker compose attach o docker compose exec con el nombre del servicio.
Nada en el archivo: los servicios de Compose están pensados para permanecer, así que no existe una clave que elimine el contenedor cuando se detiene. Para una tarea puntual, ejecute docker compose run --rm con el nombre del servicio, que elimina ese contenedor al terminar. La nota debajo del resultado indica cuándo se omitió --rm.
Un docker run con --network shop-net usa una red que ya existe. Marcarla como external indica a Compose que se una a esa red en lugar de crear la suya, de modo que los contenedores iniciados de ambas formas puedan seguir comunicándose. Para que Compose cree y gestione la red, elimine la línea external: true.
Sí, escriba los puertos como cadenas, por ejemplo "8080:80". Algunos lectores de YAML tratan dos números unidos por dos puntos como un número en base 60, así que 22:22 podría convertirse en 1342 y romper un mapeo de SSH. Esta herramienta pone entre comillas cada puerto, entrada de entorno y cadena de volumen para que el archivo signifique lo mismo en todas partes.
No. La Compose Specification declaró obsoleta la clave version:, y las versiones recientes de docker compose muestran una advertencia cuando está presente. Los archivos generados aquí empiezan directamente con services:, seguido de volumes: y networks: cuando los comandos usan volúmenes con nombre o redes personalizadas.
Los tipos y las normas cambian; consulte la fuente antes de fiarse de una cifra.
¿Sigue sin resolverlo? Pregunte sobre Convertir docker run a docker compose y cualquiera que lo sepa puede responder. No se necesita cuenta.