Adrian Cabeza

0 %
Adrian Cabeza
Paraty Tech
Front-end Lead Developer
Español
Ingles
HTML/ CSS3/ Javascript
Python
jQuery / SASS
Google Appengine / AWS
Jenkins
Google Analytics
React
Flutter
  • GIT
  • Sass, Less
  • Webpack
  • Django / Flask / Jinja2
  • RabbitMQ
  • PostrgreSQL / MongoDB
  • REST
  • Google Tag Manager
  • Administración de Sistemas
  • Administración de Redes

Docker vs Docker-Compose

22 de diciembre de 2021

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.

Posted in Desarrollo, Entornos, Virtualización
Write a comment