Docker se ha convertido en una de las tecnologías más usadas en los últimos años. Gracias a su sistema de contenedores, es posible realizar el despliegue de apps en tiempo mínimo y con ahorro de recursos; sin embargo, aún existen diferentes dudas sobre Docker y cómo comenzar a implementarlo, una de las más frecuentes es ¿qué es Dockerizar?
¿Qué es Docker?
Docker es una tecnología de código abierto que permite el libre despliegue de aplicaciones, así como todo lo relacionado con ellas, en contenedores software sin importar el sistema operativo de la máquina que se esté utilizando. Los contenedores permiten crear, implementar, ejecutar, copiar y trasladar aplicaciones con facilidad. Estas aplicaciones se pueden obtener o compartir bajo el nombre de imagen.
Este programa tiene una interfaz intuitiva, lo que es fácil de manejar. A través de las imágenes y los contenedores, no es necesario otro requerimiento o algún soporte adicional para usarlo.
Debido a las facilidades que implica Docker, las compañías han optado por dockerizar sus aplicaciones, pues de esta manera es más sencillo tener toda la información necesaria para el despliegue de aplicaciones sin la necesidades de máquinas virtuales.
Brindamos soluciones tecnológicas para más de 15 industrias
¿Qué es Dockerizar?
Dockerizar se refiere a la implementación de Docker para empaquetar una aplicación (software), para luego distribuirla y ejecutarla a través de los contenedores. También se le conoce como contenerizar aplicaciones. Dockerizar permite:
- La creación y distribución de códigos de forma más sencilla.
- Trabajar bajo la metodología DevOps
A grandes rasgos, la dockerización es el proceso de generación de imágenes que contienen las aplicaciones para poder ejecutarla o publicarla en el momento deseado.
- 1. Se elige una imagen base. Estas se pueden descargar desde Docker Hub. Depende de la solución tecnológica que se requiera, como lo puede ser Java, Ngnix o Angular. En caso de no poder ocupar la imagen deseada, se tendría que instalar todo lo respectivo a esta para hacer empleo de ella. Para este ejemplo se eligió node.
- 2. En el código, se crea un Dockerfile, es decir, todos los comandos iniciales para ensamblar una imagen.
- 3. En el Dockerfile se especifican varios comandos:
- FROM node : versión para determinar de dónde viene el servidor elegido.
- WORKDIR / nombre de la carpeta este se usa para decir qué información tendrá dentro el contenedor cuando se inicia en el equipo.
- COPY . / nombre de la carpeta para copiar los elementos dentro de esa carpeta.
- EXPOSE + puerto especificando el puerto que se usa.
- Debe especificar el punto de entrada y el comando: ENTRYPOINT “[“npm”]” y CMD “[“start”]” respectivamente.
- 4. Una vez terminado, se origina como archivo de Docker Compose: docker-compose.yml.
- 5. Ya que se ha creado el archivo, se agrega la versión elegida para ejecutar el archivo: version :"3".
- 6. Después se especifican los servicios, a su vez, los servicios pueden tener otras especificaciones como el puerto a usar, el archivo de Docker que va a usar o el volumen que va a ocupar. En esta instrucción es necesario especificar que los cambios producidos deben guardarse siempre.
- 7. Por último, se delimita el volumen: volumes + el nombre y su lugar.
- 8- Se revisa que el Dockerfile funcione de manera correcta, en la terminal se agrega el comando docker build .
- 9. Si no se marca algún error, significa que la imagen corre de manera correcta. En el caso contrario, se marcarán los errores y es posible realizar los cambios pertinentes.
- 10. Se crea un contenedor con la imagen para verificar de nuevo que todo esté funcionando: docker-compose up. En este paso se descargará todo lo necesario para que la imagen corra de manera eficiente.
- 11. En caso de existir errores, se pueden corregir sobre el Dockerfile docker-compose.yml
- 12. Una vez que todos los errores han sido corregidos, la app ya está dockerizada.
Aunque aquí se habla de manera general para ejecutar una imagen en específico, este proceso puede cambiar de una imagen a otra, así como la serie de dependencias y puertos que se deseen utilizar.
Beneficios de Dockerizar
Las aplicaciones dockerizadas han mostrado una serie de beneficios frente a aquellas que aún no se han convertido en una imagen para Docker:
- Reduce los recursos de infraestructura de las aplicaciones, así como el tiempo de desarrollo.
- Permite trabajar siguiendo la cultura de DevOps, con lo cual entregarán mejores resultados en menor tiempo.
- Cualquier aplicación se puede ejecutar en cualquier equipo una vez que haya sido Dockerizada.
- Cada aplicación cuenta con sus recursos en un contenedor en particular.
- Docker Hub permite elegir la imagen-base a emplear, así como cualquier plugin adicional.
Dockerizar ha permitido que grandes compañías reduzcan su inversión y obtengan mayores beneficios, pues cumplen con los proyectos.
¿Qué hago si ya tengo muchas apps dockerizadas?
Docker permite tener múltiples contenedores, cada uno de ellos con una app y sus recursos; sin embargo, poseer tantos contenedores puede ser complicado al momento de buscar algún contenedor en específico.
Para este tipo de situaciones se han desarrollado softwares que permiten la gestión de toda la información que resguarda Docker. Y uno de los más famosos es Kubernetes que ayuda a implementar y desplegar aplicaciones.
Debido a la sinergia producida por estas dos soluciones tecnológicas, muchos usuarios de Docker y Kubernetes han comenzado a crear un ecosistema propio para ambas tecnologías