Qué es Docker

Visitas: 24

En este capitulo vamos a intentar explicar de una manera fácil qué es Docker y que usos podemos dar tanto la domótica como para el día a día

Una pregunta muy recurrente: ¿ Qué es Docker ? Docker básicamente es un servicio de virtualización, con ello vamos a conseguir instalar aplicaciones o servicios. Indicando algunos parámetros conseguiremos levantar en cuestión de minutos servicios tales como un servidor plex, un cliente para descargar archivos torrent, un servidor wordpress, servidor linux con una imagen de casi cualquier distribución GNU Linux. Y todo ello de una manera rápida, fácil y sobre todo limpia, digo limpia porque en caso de borrar nuestro contenedor no quedara ningún residuo en nuestro sistema operativo que luego pueda perjudicarnos o entre en conflicto con otras aplicaciones del sistema. Tenemos una pagina donde podremos encontrar esas imágenes para poder levantar nuestro servicio. La web es https://hub.docker.com/. Mas tarde veremos como buscar nuestras imágenes dependiendo del SO sobre el que este corriendo docker

Video del canal en apoyo al contenido del post

Cómo se instala

Qué es Docker - posible instalaciones
Es un sistema Multiplataforma, ahí reside su versatilidad

La instalación es muy sencilla, dependiendo del SO sobre el que quieras que corra Docker. Según nos indican en la documentación de la web de docker. Es fácil solo tenemos seguir los pasos que nos indican. Este paso no lo voy a explicar, ya que tienes toda la documentación de como hacerlo en la web https://docs.docker.com/get-docker/

Una vez instalado docker vamos a instalar otra herramienta que a mi modo de ver va a hacernos entender de una manera mucho mas sencilla como funciona docker, se llama docker-compose. Básicamente es crear una receta de nuestro contenedor pero mucho mas visual y en el que podremos configurar nuestro contenedor con los parámetros mucho mas claros y entendiendo que es lo que estamos haciendo.

Instalar Home Assistant con Docker-Compose en Debian.

Docker-compose, la receta de Docker

Según nos dicen en la web docker-compose es una herramienta para definir y ejecutar aplicaciones Docker de varios contenedores. Con docker-compose, se usa un archivo YAML para configurar los servicios de su aplicación. Luego, con un solo comando, crea e inicia todos los servicios desde su configuración. En su web tienes mas info https://docs.docker.com/compose/.

El proceso de docker-compose se centra básicamente en 3 pasos.

1º -Definir el entorno de nuestra aplicación/servicio que queremos levantar

2º -Definir los servicios de esa aplicación, puertos, carpetas de configuración, redes,etc

3º -Una sola linea de comando y en minutos , descarga, configura y levanta nuestra aplicación/servicio con los parámetros que definimos en esa receta.

Os pongo un ejemplo de mi servidor Jellifyn, es un servidor multimedia en el que tengo una carpeta de películas, otra de series y en el que accedo a traces de una dirección ip y un puerto.

version: '3'
services:
  jellyfin:
    image: ghcr.io/linuxserver/jellyfin #imagen que descargara
    container_name: jellyfin #nombre del contenedor
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Madrid  #Zona horaria
    volumes:
      - /path/to/library:/config   #Ruta donde queremos que este la caropeta de config
      - /path/to/tvseries:/data/tvshows  #Ruta donde tenemos nuestras series
      - /path/to/movies:/data/movies #Ruta donde tenemos nuestras Peliculas
      - /patch/to/music:/data/music #Ruta donde tenemos nuestra musica
    ports:
      - 8096:8096   #Puertos para poder acceder a traves de la GUI un ejemplo seria ip_raspberry:8096

Como funciona docker-compose

Ahora que ya tenemos claro el funcionamiento de docker-compose vamos crear los directorios para tener ordenado nuestros contenedores. Mi consejo es crear carpetas por temática. La estructura de carpetas seria algo así. Creamos una carpeta llamada Docker, después dentro de ella otra llamada Domotica y dentro otra llamada Config (Aqui es donde iran todas las configuraciones de cada servicio que tengamos en el docker-compose de domotica). Quizás con unas imágenes os sea mas fácil de entender

Qué es Docker estructura de carpetas
Dentro de la carpeta Config creamos estas carpetas
Qué es Docker fichero compose
Ejemplo en la carpeta Domotica, creamos la carpeta Config y el archivo docker-compose.yaml relacionado con los contenedores de Domotica
Qué es Docker y sus contenedores
En mi docker-compose de Domotica tengo estos servicios, son un ejemplo

Ventajas de trabajar con Docker

Y este es mi docker-compose de Domotica


version: '3'
services:
# ########## homeassistant ##########################3
  homeassistant:
     container_name: Home-assistant
     image: homeassistant/home-assistant:latest
     volumes:
       - /mnt/Backup/Docker/Domotica/Hassio/config/:/config
     restart: always
     network_mode: host
     environment:
      - TZ=Europe/Madrid
     ports:
       - 8123:8123
##################### Heindall ######################33
  heimdall:
    image: linuxserver/heimdall:latest
    container_name: 06_Heimdall
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Madrid
    volumes:
      - /mnt/Backup/Docker/Heimdall/config:/config
    ports:
      - 85:80  #este puerto esta cambiado porque me daba conflicto con otro servicio que tenia en el 80
    restart: always
############### Mqtt ########################################
  mqtt:
    image: amd64/eclipse-mosquitto:latest
    container_name: 03_Mqtt
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Madrid
    volumes:
      - /mnt/Backup/Docker/Domotica/Mqtt/config:/config
      - /mnt/Backup/Docker/Domotica/Mqtt/data:/data
      - /mnt/Backup/Docker/Domotica/Mqtt/log:/log
    ports:
      - 1883:1883
    network_mode: host
    restart: always
################### Portainer ########################
  portainer:
    image: portainer/portainer-ce
    container_name: 00_Portainer
    ports:
      - 9000:9000
    volumes:
      - portainer_data:/data
      - /var/run/docker.sock:/var/run/docker.sock
    network_mode: host
    restart: always
################## zigbee2mqtt ##############################
  zigbee2mqtt:
      container_name: 02_Zigbee2mqtt
      image: koenkk/zigbee2mqtt:latest-dev
      volumes:
        - /mnt/Backup/Docker/Domotica/Zigbee/data:/app/data
        - /run/udev:/run/udev:ro
      devices:
        - /dev/ttyACM0:/dev/ttyACM0
      restart: always
      network_mode: host
      privileged: true
      environment:
        - TZ=Europe/Madrid
############## zigbee2mqttassistant #############################################
  zigbee2mqtt-assistant:
    container_name: zigbee2mqtt-assistant
    image: carldebilly/zigbee2mqttassistant
    environment:
      - Z2MA_SETTINGS__MQTTSERVER=192.168.31.50
      - Z2MA_SETTINGS__MQTTPORT=1883
      - Z2MA_SETTINGS__MQTTUSERNAME=oscar
      - Z2MA_SETTINGS__MQTTPASSWORD=9690
    ports:
      - 86:80
    restart: always
################## Volumes ###############
volumes:
  portainer_data:
  mosquitto_data:
  config:
  data:

Bueno una vez que tenemos nuestro docker-compose.yml creado con los parámetros definidos, solo nos queda lanzar el comando y que levante los servicios. Mediante consola nos situamos en la carpeta donde tenemos el docker-compose.yml escribimos docker-compose up -d y automáticamente empezara a descargar las imágenes, seguidamente configurara los parámetros que declaramos en el docker-compose.yml. Al cabo de unos minutos ya tendremos nuestros contenedores funcionado y todo con uno solo comando, no es magnifico….

Qué es Docker comandos
esta es la lista de comandos disponibles

Bueno hasta aquí este tutorial, espero haberte ayudado a comprender que es docker y la cantidad de posibilidades que nos da. Ya sabes que estamos en el canal de Telegram para ayudarte en lo que necesites.

Un saludo a todxs y recuerda La vida son dos dias y uno ya a pasado

1 comentario

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.