Aprendiendo Docker: Guia para principiantes

yevgen letinyevgen letin
9 min read

Componentes Docker

Es el componente más pequeño en el mundo de Docker. Todas las aplicaciones se ejecutan en un contenedor. Lo más común es que sea una aplicación por contenedor, y cada uno debe tener un único propósito.

Docker tiene Cliente, Daemon y Host

Cliente -> es el terminal donde nosotros nos podemos conectar al servicio DAEMON. El servicio puede estar funcionando en nuestra maquina como en un servidor remoto pero casi siempre suele ser en la misma maquina donde esta el cliente.

Daemon -> es un servicio que se encarga de dar todo el servicio a los contenedores.

Host-> Aloja al servicio de docker DAEMON.

Image-> es la imagen base desde donde se originan los contenedores, puede haber una imagen pero diferentes contenedores creados con la misma imagen.

Registry -> Es un servidor donde se almacenan y distribuyen imágenes de Docker

Repository -> Un repository (repositorio) es una colección de versiones (tags) de una misma imagen dentro del registry.

¿Como funcionan los contenedores?

Todos los contenedores docker se despliegan en un sistema linux. Todo sistema os linux tiene un core linux kernel , Ram, CPU, Network, Disco. Para poder crear contenedores nosotros necesitamos Docker engine este es el encargado de arrancar servicio DAEMON.

Este es lo mínimo necesario para crear contenedores.

Todos los contenedores comparten el Kernel, todos los contenedores tienen un sitio reservado de memoria en disco donde se guardan los archivos de ese único contenedor.

Los contenedores tiene un proceso independiente de otros contenedores con sus procesos.

Tenemos que entender que todos los contenedores utilizan los mismos recursos en un host. Hay que estar atentos de que un único contenedor no ocupe todos los recursos, ya que ralentizará a los demás contenedores.

¿Con una única imagen puedo rear muchos contenedores?

Cuando creamos diferentes contenedores a partir de una misma imagen, es importante saber que algunos archivos comunes se compartirán en memoria y estarán en un solo lugar. Estos archivos no se duplicarán según el número de contenedores.

De esta manera, Docker reutiliza capas entre diferentes imágenes y solo guarda las capas que no tiene almacenadas. Así optimiza el uso de los recursos.

Una vez que un contenedor termina, todos los archivos en el disco se eliminan. Para evitar la pérdida de datos, se puede vincular a un volumen (espacio en disco) de nuestra máquina. Esto se explicará más adelante.

Una imagen - muchos contenedor

Tenemos una imagen que es un conjunto de archivos estáticos. A partir de una imagen, se pueden crear muchos contenedores. Por ejemplo, podemos descargar una imagen de Docker Hub, guardarla en nuestro ordenador y luego usarla para crear muchos contenedores.

¿Que son las capas de una imagen?

Una imagen se compone de diferentes capas para optimizar el espacio. Cuando distintas imágenes comparten las mismas capas, docker no necesita almacenar cada capa por separado; basta con almacenarla una vez y luego, al crear la imagen, se monta a partir de las diferentes capas.

Todas las capas son de solo lectura y no se pueden sobreescribir una vez que se ha creado el contenedor.

Repositorios DOCKER

Las imágenes son muy fáciles de almacenar y distribuir porque son un conjunto de archivos.

Las imágenes se guardan en repositorios. En un solo repositorio, se pueden almacenar diferentes versiones de la misma imagen, y los repositorios pueden ser públicos o privados.

Todas las imágenes tienen una versión o etiqueta.

etiqueta latest -> última versión

etiqueta alpine -> es la versión mínima.

¿Como puedo saber la version de docker en local?

docker version

Al tener el docker desktop apagado, nos muestra que el cliente no puede conectarse al servicio Docker DAEMON.

¿Como visualizar todos los contenedores en mi máquina?

docker ps -a

Muestra tanto los contenedores que están en funcionamiento como los que están detenidos.

¿Como visualizar todas las imágenes docker guardadas en mi máquina?

docker images

¿Como me puedo descargar una imagen y correrla en mi docker?

docker run hello-world

Con este comando, Docker intenta crear un contenedor. Primero busca la imagen localmente, y si no existe, la buscará en Docker Hub. Luego descarga la imagen, la guarda localmente y crea el contenedor.

hello-world es una imagen oficial que se encuentra en Docker Hub. Actualmente, no la tenemos en nuestro ordenador, pero si la ejecutamos, se descargará localmente desde Docker Hub la versión más reciente (latest) y se creará un contenedor.

docker pull hello-world

Este comando solo descarga la imagen localmente pero no crea el contenedor

docker container prune

Comando para eliminar todos los contenedores.

docker run -it busybox

¿Y como puedo conectarme a un contenedor?

El -it entra dentro del contenedor y ejecuta un terminal interactivo creando un proceso dentro del contenedor. Si un contenedor no tiene ningún proceso abierto es finalizado automaticamente.

Una vez dentro del terminal escribimos ls y visualizamos todos los directorios.

hostname -i

Visualizamos el hostname del contenedor que le fue asignado.

¿Puedo saber si desde dentro del contenedor tengo acceso a internet?

ping 8.8.8.8

Lo único que necesitamos hacer desde la terminal del contenedor hacer un ping.

0
Subscribe to my newsletter

Read articles from yevgen letin directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

yevgen letin
yevgen letin