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
