Docker es una plataforma de software desarrollada para facilitar el despliegue de aplicaciones basadas en el concepto de contenedores. La plataforma se puede usar para crear, probar y distribuir aplicaciones al recopilarlas en unidades estandarizadas, llamadas "contenedores".
Los contenedores Docker se pueden considerar entornos aislados donde las aplicaciones se pueden ejecutar sin interferencia de otros procesos. De manera similar a lo que sucede con las máquinas virtuales, se asignan recursos computacionales específicos a cada contenedor. A diferencia de las máquinas virtuales, Docker no requiere ninguna emulación de hardware, sino que utiliza el hardware físico del host para cada contenedor.
Al ser eficiente en recursos y capaz de generar un rendimiento mejorado del sistema, la contenedorización puede verse como la evolución natural de la virtualización. Además, como cuentan con todo lo necesario para la correcta ejecución de las aplicaciones, incluidas bibliotecas, herramientas del sistema y códigos, los contenedores simplifican la implementación de una aplicación sin necesidad de preocuparse por la configuración del entorno de ejecución.
En este tutorial, aprenderá cómo administrar mejor los contenedores de Docker en Linux, descargar imágenes de Docker Hub, crear un nuevo contenedor y guardar una imagen del mismo.
Cuando la plataforma Docker no está presente en su sistema, se recomienda seguir nuestra guía sobre Cómo instalar Docker en Ubuntu 18.04.
Descargando imágenes
Los contenedores se crean a partir de imágenes. Por defecto estas imágenes se descargan de Docker Hub, un registro de imágenes oficiales proporcionado por la empresa.
Cualquiera puede alojar sus imágenes en Docker Hub. Esto permite el uso de imágenes preempaquetadas como base para sus aplicaciones.
Intente ejecutar el comando:
$ docker run centos
Docker buscará la imagen "centos" en el registro local. Si no lo encuentra (ya que no se ha descargado hasta ahora), Docker lo descargará de Docker Hub y construirá el contenedor con esta imagen.
La imagen utilizada no proporciona ningún resultado visual, pero puede ver el contenedor ejecutándose con el comando:
$ docker ps
para ver todos los contenedores existentes, tanto en ejecución como detenidos:
$ docker ps -a
Para ver la lista de imágenes descargadas, escriba:
$ docker images
Contenedores de construcción
Los contenedores son similares a las máquinas virtuales y son menos costosos en términos de recursos.
Intente construir uno con la imagen de centos descargada previamente:
$ docker run -it centos
El modificador "-it" permite el acceso al caparazón dentro del contenedor. El shell que se muestra no es de su sistema operativo sino del contenedor:todos los comandos se ejecutarán en el shell del sistema operativo presente dentro del contenedor (en este caso Ubuntu) y no en el shell del host.
Para salir del shell del contenedor y volver al shell del host, escriba:
$ exit
Para iniciar, detener o eliminar un contenedor:
$ docker start ID_or_container_name
$ docker stop ID_or_container_name
$ docker rm ID_or_container_name
Antes de iniciar o eliminar un contenedor, debe estar en estado de "detención".
Antes de bloquear un contenedor, debe estar en estado de "ejecutar".
Los contenedores son entornos aislados y, por lo tanto, están "cerrados" por definición. Para interactuar con su "contenido", asigne un puerto de comunicación.
$ docker run -p 8081:80 -d nginx
“docker run”:comando de inicio del contenedor.
“-p 8081:80”:expone el puerto 80 del contenedor en el puerto 8081 del host.
Si se trata de un contenedor que alberga un WebServer, acceda a él mediante "localhost:8081".
“-d”:ejecutar el contenedor en segundo plano.
“nginx”:imagen utilizada para construir el contenedor.
Si la imagen no está presente localmente, se descarga desde Docker Hub.
Imágenes de contenedores de construcción
Una vez hecho el contenedor y las "personalizaciones" necesarias, se recomienda la creación de la imagen relativa:todo lo que se inserta en el contenedor (instalación de módulos adicionales u otras personalizaciones) permanece en el contenedor y no en la imagen utilizada para la compilación. Si se elimina y se vuelve a crear, el contenedor no mostrará ninguno de los cambios realizados hasta ese momento.
Suponga que ha creado un contenedor con la imagen de CentOS e instaló Nginx. Si elimina el contenedor y lo vuelve a crear con la imagen de ubuntu, no tendrá Nginx en el contenedor ya que la imagen utilizada no lo contiene.
Para generar la imagen de un contenedor (y tener una copia de seguridad para recrear el contenedor con las mismas condiciones) ejecute el comando:
$ docker commit -m "List of changes made" -a "User name" container_id repository/image_name
"-m" se usa para escribir la lista de cambios para obtener un registro para consultar
"-a" se usa para indicar el nombre del usuario que genera la imagen
Este comando guarda la imagen en el registro local (visible a través de imágenes acoplables).
La imagen también se puede guardar en Docker Hub. Esto se puede hacer autenticándose primero en Docker Hub, usando Docker (desde shell), escribiendo:
$ docker login -u username
Se le solicitará que ingrese la contraseña para la autenticación en Docker Hub
$ docker push username/image_name