Instalación de Docker-Compose

Comandos Docker.

Conocer contenedores descargados – docker images

Descargar contenedor – docker pull contenedor

Ejecutar docker compose – docker-compose -f ~/docker/docker-compose.yml up -d

Docker compose es una aplicación ampliada de docker, donde podemos gestionar los contenedores que utilizamos, de una forma conjunta desde un archivo único. Estos nos permite ejecutarlos y actualizarlos de una forma mas sencilla.

Instalar docker compose:

sudo curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

Ejecutar permisos para docker compose:

sudo chmod +x /usr/local/bin/docker-compose

Comprobar version docker compose:

docker-compose --version

:Evitar sudo en comandos docker compose:

sudo usermod -aG docker ${USER}

Configurar los datos comunes de todos los contenedores en el archivo enviromnet:

sudo nano /etc/environment

Datos a incluir en enviroment:

PUID=1001
PGID=999
TZ="Europe/Madrid"
USERDIR="/srv/homeautomation"

Crear carpeta docker en /home/anderaan:

mkdir ~ / docker

Darle permisos a la carpeta:

sudo setfacl -Rdm g:docker:rwx ~/docker
sudo chmod -R 775 ~/docker

El comando anterior obliga a cualquier subcarpeta nueva dentro de la carpeta acoplable a heredar permisos de la carpeta acoplable. Algunos pueden estar en desacuerdo con los permisos liberales anteriores, pero nuevamente esto es para uso doméstico y es lo suficientemente restrictivo.

Inicio de Docker Compose File:

nano ~/docker/docker-compose.yml

Añadimos estas dos filas:

version: "3.6"
services:

Después de agregar opciones de redacción para cada contenedor (tenga en cuenta que aún no las hemos agregado), le recomiendo guardar, salir y ejecutar el archivo de redacción con el siguiente comando para verificar si la aplicación del contenedor se inicia correctamente.

docker-compose -f ~/docker/docker-compose.yml up -d

Estos son algunos de los comandos para trabajar en docker:

Verificar contenedores en el sistema:

docker ps -a

Verificar registros de docker:

docker-compose logs 

Verificar registros de docker en particular:

docker-compose logs CONTAINER-NAME

Detener contenedor docker:

docker-compose stop CONTAINER-NAME

Reiniciar contenedor docker.

docker-compose restart CONTAINER-NAME

Para detener y eliminar completamente los contenedores, las imágenes, los volúmenes y las redes (vuelva a cómo estaba antes de ejecutar el archivo de composición de Docker), use el siguiente comando:

docker-compose -f ~/docker/docker-compose.yml down

Estos comandos eliminarán los contenedores, volúmenes e imágenes perdidos que no se estén ejecutando o que no estén asociados con ningún contenedor:

docker system prune
docker image prune
docker volume prune

Contenedor Portainer:

nano ~/docker/docker-compose.yml

Incluir las siguientes lineas:

portainer:
image: portainer/portainer
container_name: portainer
restart: always
command: -H unix:///var/run/docker.sock
ports:
– «9000:9000»
volumes:
– /var/run/docker.sock:/var/run/docker.sock
– ${USERDIR}/portainer/data:/data
– ${USERDIR}/shared:/shared
environment:
– TZ=${TZ}

Guardar archivo docker-compose.

Ejecutar docker-compose:

docker-compose -f ~/docker/docker-compose.yml up -d 

Contenedor mqtt mosquitto:

mqtt:
container_name: MQTT
restart: always
image: eclipse-mosquitto
volumes:
– ${USERDIR}/mosquitto/mosquitto.conf:/mosquitto/config/mosquitto.conf
– ${USERDIR}/mosquitto/log:/mosquitto/log
– ${USERDIR}/mosquitto/data:/mosquitto/data
– /etc/localtime:/etc/localtime:ro
ports:
– «1883:1883»
– «9001:9001»

En caso de no funcionar, entrar en consola del contenedor para poner el usuario y contraseña de mosquitto. Para entrar el la consola del docker:

sudo docker exec -it mosquitto sh

Para meter el usuario y contraseña:

mosquitto_passwd -c /mosquitto/config/pwfile anderaanmqtt

Ejecutamos docker compose para cargar el contenedor:

docker-compose -f ~/docker/docker-compose.yml up -d 

Contenedor Home-assistant:

homeassistant:
container_name: homeassistant
restart: always
image: homeassistant/home-assistant
devices:
– /dev/ttyACM0:/dev/ttyACM0
volumes:
– ${USERDIR}/hass-config:/config
– /etc/localtime:/etc/localtime:ro
– ${USERDIR}/shared:/shared
ports:
– «8123:8123»
network_mode: host
privileged: true
environment:
– PUID=${PUID}
– PGID=${PGID}
– TZ=${TZ}

Dokermon. Este contenedor se utiliza para gestionar los contenedores desde homeassistant:

hadockermon:
container_name: hadockermon
restart: always
image: philhawthorne/ha-dockermon
volumes:
– /var/run/docker.sock:/var/run/docker.sock
– ${USERDIR}/hadockermon:/config
ports:
– 8126:8126
environment:
– TZ=${TZ}

Zigbee2mqtt

zigbee2mqtt:
  container_name: zigbee2mqtt
  image: koenkk/zigbee2mqtt
  volumes:
    -${USERDIR}/zigbee2mqtt/data:/app/data
    -${USERDIR}/zigbee2mqtt/data/zigbee-shepherd-converters:/app/node_modules/zigbee-shepherd-converters
    -${USERDIR}/zigbee2mqtt/data/lib/extension/homeassistant.js:/app/lib/extension/homeassistant.js
  devices:
    - /dev/ttyACM0:/dev/ttyACM0
  restart: always
  network_mode: host
  environment:
    - TZ=Europe/Amsterdam

Grafana:

grafana:

   grafana:
     image: grafana/grafana
     container_name: grafana
     volumes:
       - ${USERDIR}/grafana:/var/lib/grafana
     environment:
       - TZ=Europe/Amsterdam
     ports:
       - 3000:3000
     restart: always

Influxdb:

influxdb:

  influxdb:
    image: influxdb
    container_name: influxdb
    environment:
      - TZ=Europe/Amsterdam
    network_mode: host
    ports:
      - 8083:8083
      - 8086:8086
    restart: always
    volumes:
      - ${USERDIR}/influxdb/config/:/etc/influxdb/
      - ${USERDIR}/influxdb/db:/var/lib/influxdb

Deja una respuesta

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