¿Qué es un contenedor docker?


¿Qué es un contenedor de docker?, lo podemos definir como una forma de limitar los recursos para una aplicación, donde solo va a contener sus librerías, configuraciones, entre otros

oscar Escrito por oscar 05 June 2020 2163 0

Contenido

Acerca del proyecto

Este post vamos a explicar ¿qué es un contenedor?, las principales características que posee, adicionalmente vamos a ver porque docker usa contenedores en su estructura para poder trabajar.

Conocimiento previo

Para realizar este proyecto se requiere conocimiento previo de los siguientes temas, si aun no has trabajado con lo que se menciona en la siguiente tabla, allí están los links a los post para que puedas dar un repaso adicional o puedas recordar el conocimiento necesario para poder realizar este proyecto.

Proyecto Descripción
Introducción docker Iniciamos con docker, donde conoceremos los temas que vamos a trabajar en este curso, aprenderemos a usar este gestor de contenedores con todas sus funcionalidades, ademas realizaremos ejercicios prácticos para reforzar el conocimiento aprendido.
¿Qué es docker? ¿Qué es docker?, es una plataforma que permite crear e implementar aplicaciones rápidamente. En este post aprenderás a detalle la definición, sus características y la diferencia con las tecnologías de aplicaciones tradicionales.
¿Qué es una imagen en docker? ¿Qué es una imagen en docker?, es un archivo compuesto por múltiples capas, que se utiliza para ejecutar código en un contenedor de docker. En este post aprenderás la definición y como usar las imagenes para crear contenedores.

Historia

Antes de definir un contenedor entendamos primero porque se crearon, antes de que los contenedores llegarán al mercado lo que se hacía era montar un servidor con todos los programas, procesos, aplicaciones, entre otros, instalados y configurados donde compartían el mismo recurso el mismo disco duro y la misma infraestructura.

Máquina con servidor
Máquina con servidor

 

En la imagen anterior, tenemos como base un sistema operativo en el servidor, al cual le instalamos todas las librerías, paquetes, programas, entre otros complementos, luego instalamos la aplicación principal en el servidor, en esta forma de trabajo se estan compartiendo los recursos con otras aplicaciones que tengamos en ese mismo servidor. Esto es una gran desventaja porque no se sabe cuántos recursos se estan consumiendo por cada aplicación y el mantenimiento de este servidor se vuelve muy complejo porque al mover una sola variable o un solo programa podemos llegar a alterar los demás programas.

Una de las soluciones prácticas que se utilizaba para poder tener nuestras aplicaciones con el mejor rendimiento era crear un servidor por destino, es decir nuestra aplicación estaría en un servidor, de igual forma tendriamos otro servidor para la base de datos, un servidor para lo que son las peticiones http, servidores de correos, entre otros; pero como podemos observar, tenemos un servidor independiente para cada programa, proceso o servicio y puede que se solucione el problema de los recursos y el rendimiento de la aplicación, pero a nivel de infraestructura se ampliaba y es más complejo hacer el mantenimiento de esta forma.

Máquinas con varios servidores
Leyenda

Máquinas con varios servidores

Una de las soluciones que llegó fueron las máquinas virtuales, las cuales nos permitieron emular en un servidor varios ordenadores, esto permite aprovechar los recursos fisicos donde a cada maquina virtual se le asignaba dichos recursos segun la capacidad requerida por cada aplicación.

Servidor con máquinas virtuales
Servidor con máquinas virtuales

 

Pero esto conlleva a una gran desventaja ya que al momento de iniciar una máquina virtual técnicamente estamos iniciando un sistema operativo completo con todas sus funcionalidades y todas sus configuraciones, esto es lo que hace es utilizar aún más procesador, memoria, entre otros recursos para poder mantener este tipo de infraestructura.

¿Qué es un contenedor?

Qué son los contenedores, básicamente se define el como poder limitar los recursos que se esta ejecutando para una aplicación, donde sola va a contener sus librerías y su configuración respectiva para que la aplicación se puede ejecutar correctamente.[1]

Servidor con docker
Servidor con docker

 

Un servidor de contenedores lo que hace es poner diferentes límites a sus aplicaciones que nosotros vamos a ejecutar, lo que hace es encerrarlas de tal manera que se le asignan una serie de recursos tanto de Hardware como de Software a los que puede acceder colocando como restricción que nunca puede pasar de esos límites, la forma como docker encierra sus contenedor es en un conjunto de tecnologías que ya posee Linux las cuales son los: Namespaces, Cgroups, Chroot entre otras herramientas de Software que permite identificar cada uno de los contenedores.

Esta forma de trabajar permite algunas características adicionales con respecto a lo que son las máquinas virtuales y la forma de manejar las aplicaciones, ya que los contenedores son livianos porque trabajan directamente sobre el kernel y no sobre una máquina virtual, no necesitan instalar nuevos sistemas operativos ya que va a trabajar con el sistema base que contiene, la aplicación al estar contenida permite mejorar sus rendimientos y el uso de pocos recursos, lo cual permite tener más contenedores con más aplicaciones o servicios dentro de un mismo servidor, ademas la portabilidad es una de las ventajas solo se necesita un simple archivo donde se describan las características necesarias para crear un contenedor y este lo podemos utilizar en otro servidor donde docker se encargara de crear el contenedor con las mismas características.

Comandos

  • docker run: Este comando se utiliza para crear y ejecutar un contenedor Docker a partir de una imagen.

  • docker ps: Este comando se utiliza para listar los contenedores que se están ejecutando actualmente.

  • docker stop: Este comando se utiliza para detener un contenedor que se está ejecutando.

  • docker rm: Este comando se utiliza para eliminar un contenedor que ya no se necesita.

  • docker exec: Este comando se utiliza para ejecutar un comando dentro de un contenedor que se está ejecutando.

  • docker logs: Este comando se utiliza para ver los registros de un contenedor que se está ejecutando.

  • docker inspect: Este comando se utiliza para obtener información detallada sobre un contenedor, como su dirección IP y sus puertos expuestos.

  • docker build: Este comando se utiliza para construir una imagen Docker a partir de un archivo Dockerfile.

Referencias

[1] docker https://www.docker.com/resources/what-container, Consultado Junio 2020


Comentario

Debe aceptar antes de enviar