¿Cuál es la diferencia entre docker-compose up y docker-compose start?

124

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?

Michael Villeneuve
fuente

Respuestas:

166

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 upcomando agrega la salida de cada contenedor (esencialmente en ejecución docker-compose logs -f). Cuando el comando sale, todos los contenedores se detienen. La ejecución docker-compose up -dinicia 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 uprecoge los cambios deteniendo y recreando los contenedores (preservando los volúmenes montados). Para evitar que Compose recoja los cambios, use la --no-recreatebandera.

Para la referencia completa de la CLI:
https://docs.docker.com/compose/reference/

Luiz Lago
fuente
3
enlace actualizado a la referencia CLI de docker-compose: docs.docker.com/compose/reference * docker-compose up: docs.docker.com/compose/reference/up * docker-compose start: docs.docker.com/compose/reference / inicio
michael
18

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. Use uppara iniciar o reiniciar todos los servicios definidos en a docker-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 runcomando 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ícelo run para ejecutar pruebas o realizar una tarea administrativa, como eliminar o agregar datos a un contenedor de volumen de datos. El runcomando actúa de la misma manera docker run -tique 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 startcomando es útil solo para reiniciar los contenedores que se crearon previamente, pero que se detuvieron. Nunca crea nuevos contenedores.

Supun Praneeth
fuente
¿Cómo el comando de reinicio es diferente de cualquiera de estos: ejecutar, iniciar, subir?
Nag