¿Docker, qué es y cómo se usa?

Cuando trabajamos con un equipo informático, podemos comunicarnos con otros equipos, sea en red local o a través de internet, esto nos ofrece muchas posibilidades pero también supone un problema, y es que para que dos elementos se entiendan, deben hablar el mismo idioma, sean personas o máquinas. La función de los protocolos de comunicación como el HTTP permite este tipo de comunicación, sin embargo, aunque compartan idioma, a menudo dos equipos tienen muy diversas configuraciones.

Entra aquí Docker, un software que nos permite trabajar con contenedores (que podemos visualizar como cajitas) en los que definimos una configuración determinada y ajena al sistema anfitrión y su configuración.

¿En qué se traduce esto? en que dos usuarios pueden, a través de ese contenedor, trabajar en el mismo entorno, lo que supondrá facilitar mucho las tareas de configuración y los posibles errores de versiones.

Ahora que sabemos lo que es un gestor de contenedores hablemos de Docker.

DOCKER

Docker nace dentro de dotCLoud (empresa enfocada a PaaS), a manos de Solomon Hykes entre otros. Docker es una evolución de la tecnología patentada de dotCloud unida a proyectos de código abierto como Cloudlets.

Docker fue liberado en marzo de 2013, mes en el que deja de utilizar LXC como entorno de ejecución por defecto y pasa a utilizar su propia biblioteca «libcontainer» (escrita en Go).

Como curiosidad, la principal contribuyente al proyecto Docker, fue la organización Red Hat, seguidos de Microsoft, IBM, Google, Cisco y Amadeus IT group.

Docker es un proyecto de código abierto que automatiza el despliegue de aplicaciones dentro de contenedores, uno de sus mayores atractivos es que puede integrarse con herramientas de infraestructura como AWS (amazon web services), Jenkins, Ansible, Azure, Coogle cloud platform, etc…

Se suele comparar Docker con el uso de máquinas virtuales y a efectos prácticos, en ambos casos hablamos de virtualización, sin embargo las diferencias son muchas y la de más peso es el consumo de recursos, en una máquina virtual se ejecuta un kernel anfitrión usando recursos del host, mientras que Docker, haciendo uso de los namespaces y los control groups de Linux, permite un reparto eficiente de los recursos del host.

Docker compose

Docker dispone de la funcionalidad docker-compose, la cual permite una fácil gestión de proyectos multi contenedor, automatizando el despliegue según los parámetros definidos en un archivo YAML.

Ejemplo de docker-compose.yml:

services:
 # Nginx server configuration   
  web:
    image: nginx:1.22
    container_name: webserver
    restart: unless-stopped
    depends_on:
      - docker-mysql
      - php
    links:
      - docker-mysql
      - php
    volumes:
      - C:/Users/tecnitium/Desktop/DAW2:/var/www/html
      - C:/Users/tecnitium/Desktop/DAW2/servidor/stack/docker-php/nginx:/etc/nginx/conf.d/
    ports:
      - "8080:80"
 # Php-fpm configuration
  php:
    image: php:8.1-fpm
    restart: unless-stopped
    volumes:
      - C:/Users/tecnitium/Desktop/DAW2:/var/www/html
      - C:/Users/tecnitium/Desktop/DAW2/servidor/stack/docker-php/php:/usr/local/etc/php/php.ini
 # Mysql configuration
  docker-mysql:
    image: mysql:5.7
    container_name: docker-mysql-demo
    restart: unless-stopped
    environment:
        - MYSQL_DATABASE=docker_demo
        - MYSQL_ROOT_PASSWORD=root123

    ports:
        - "3308:3306"
    volumes:
        - C:/Users/tecnitium/Desktop/DAW2/servidor/stack/docker-php/dbdata:/var/lib/mysql

Este yml define un stack formado por nginx como servidor, PHP como lenguaje de servidor y una base de datos MYSQL

Docker portainer

A la hora de monitorizar y gestionar nuestros contenedores, disponemos de herramientas que permiten hacerlo a través de una cómoda interfaz gráfica, es el caso del open source «portainer» (www.portainer.io).

Su instalación es muy sencilla, debemos introducir los siguientes comandos, con Docker abierto, en consola:

  • docker volume create portainer_data
  • docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

Esto hará que portainer se instale y escuche en el puerto 9000 de localhost (Se puede cambiar con facilidad en el .yml en caso de usar docker-compose).

Su cómoda interfaz permite una fácil gestión de los stacks que tengamos definidos.

¿Te ha resultado útil?

Promedio de puntuación 0 / 5. Recuento de votos: 0