Diferencia en docker y docker-compose
Una vez nos iniciamos en el inmenso mundo de Docker, nos percatamos de que hay algo que vamos a ver en diferentes ocasiones, en algunos lugares usan docker (Dockerfile) y en otros muchos casos docker-compose (docker-compose.yml)
Ahora bien, sabiendo que existen 2 tipos, ¿porque nos hacen esto?¿porque hacen falta 2 diferentes?
Vamos a intentar explicarlo de una manera entendible.
Cuando estamos trabajando con una imagen (supongamos nginx) y nos gustaría personalizar algunos elementos de esta imagen, podemos hacerlo gracias a Dockerfile.
Con personalización hacemos referencia a la instalación por ejemplo de servicios extras (apache, php, etc..)
A continuación puedes ver un ejemplo de Dockerfile en el que se usa una imagen de Ubuntu 12, y en este se instala Jenkins
¡Perfecto! Ahora ya tenemos claro como funciona un Dockerfile
Ahora bien, esto para que nos sirve, pues supongamos el
siguiente caso, voy a necesitar realizar constantes modificaciones, y para cada
modificación voy a necesitar restaurar el sistema.
Pues para esto nos sirve, hablando mas coloquialmente, básicamente
vamos a preparar un entorno, y una vez preparado, lo vamos a guardar en un zip,
cuando vayamos a usarlo, copiaremos el zip, y lo descomprimiremos.
Esto también puede ser muy útil a la hora de realizar despliegues, ya que nos puede ahorra muchísimo tiempo.
Ahora pasemos a docker-compose, sabiendo esto que hemos
hablado, ¿para que sirve?
Pues su esencia es orquestar múltiples imágenes (Dockerfile)
en un único punto.
Supongamos el siguiente caso, vamos a ponernos en el caso de que tenemos nuestro sistema con Jenkins ya montado, y ahora también tenemos que instalar una base de datos.
Para esto es lo que nos va a ayudar tanto docker-compose.yml, podemos tener en un único punto todos nuestros “sistemas”.
Por un lado vamos a tener nuestro servicio con apache, y por otro lado vamos a tener nuestro servicio con una base de datos en este caso MySQL.
Vamos a mostrar un ejemplo de como quedaría el código en un caso en el que quisieramos tener Prestashop y a su vez MySQL
¡Genial! Espero que de esta manera haya podido ayudarte un poco mas a entender la diferencia entre ambas.