Cada vez que ejecuto
docker-compose start
docker-compose ps
Veo mis contenedores con el estado "UP". Si lo hago
docker-compose up -d
Veré más detallado pero tendrá el mismo estado. ¿Hay alguna diferencia entre ambos comandos?
Cada vez que ejecuto
docker-compose start
docker-compose ps
Veo mis contenedores con el estado "UP". Si lo hago
docker-compose up -d
Veré más detallado pero tendrá el mismo estado. ¿Hay alguna diferencia entre ambos comandos?
Respuestas:
docker-compose start
( https://docs.docker.com/compose/reference/start/ )
Inicia los contenedores existentes para un servicio.
docker-compose up
( https://docs.docker.com/compose/reference/up/ )
Construye, (re) crea, inicia y se conecta a contenedores para un servicio.
A menos que ya se estén ejecutando, este comando también inicia los servicios vinculados.
El
docker-compose up
comando agrega la salida de cada contenedor (esencialmente en ejecucióndocker-compose logs -f
). Cuando el comando sale, todos los contenedores se detienen. La ejecucióndocker-compose up -d
inicia los contenedores en segundo plano y los deja en ejecución.Si hay contenedores existentes para un servicio, y la configuración o imagen del servicio se cambió después de la creación del contenedor,
docker-compose up
recoge los cambios deteniendo y recreando los contenedores (preservando los volúmenes montados). Para evitar que Compose recoja los cambios, use la--no-recreate
bandera.
Para la referencia completa de la CLI:
https://docs.docker.com/compose/reference/
En el docker Preguntas frecuentes, esto se explica muy claramente:
¿Cuál es la diferencia entre subir, correr y comenzar?
Por lo general, quieres
docker-compose up
. Useup
para iniciar o reiniciar todos los servicios definidos en adocker-compose.yml
. En el modo "adjunto" predeterminado, verá todos los registros de todos los contenedores. En el modo "separado" (-d
), Compose sale después de iniciar los contenedores, pero los contenedores continúan ejecutándose en segundo plano.El
docker-compose run
comando es para ejecutar tareas "únicas" o "ad hoc". Requiere el nombre del servicio que desea ejecutar y solo inicia los contenedores para los servicios de los que depende el servicio en ejecución. Utilícelorun
para ejecutar pruebas o realizar una tarea administrativa, como eliminar o agregar datos a un contenedor de volumen de datos. Elrun
comando actúa de la misma maneradocker run -ti
que abre un terminal interactivo al contenedor y devuelve un estado de salida que coincide con el estado de salida del proceso en el contenedor.El
docker-compose start
comando es útil solo para reiniciar los contenedores que se crearon previamente, pero que se detuvieron. Nunca crea nuevos contenedores.