Tecnología de virtualización Docker

Gestión

Hay un docker portainer escuchando en http://brocoli.lechuga.eu:9000

Enlace útiles

https://docker-curriculum.com/

Comandos

Ejecutar un contenedor

Ejecutar un comando dentro de un contenedor (bash para tener un shell)
docker exec -it <container id> <comando>

Arrancar un contenedor ya inicializado
docker start <nombre_del_contenedor>

Arrancar un contenedor personal (primera vez, para configurar)
Se descargará si no la tenemos en el repositorio local de imágenes

docker run --name=<nombre_del_contenedor> -e PUID=1015 -e PGID=1016 -e TZ=Europe/Madrid -p 7888:80 -p 4443:443 --restart unless-stopped <nombre_de_la_imagen>

docker run -d --rm=true --name=metube -v /tmp:/downloads --user="1015:1016" -e TZ=Europe/Madrid -p 8081:8081 alexta69/metube

# -d --> detached
# --rm=true --> Eliminar tras stop o reinicio
# --v ... --> mapeado de directorios
# --user="1015:1016" --> con qué usuario se ejecuta
# -e TZ=Europe/Madrid --> zona horaria
# -p 8081:8081 --> redirección de puertos
# --restart unless-stopped --> reiniciar el contenedor a no ser que se haya parado manualmente
# "alexta69/metube"  --> imagen a utilizar

Ejecutar un comando interactivo en un contenedor en marcha
docker exec -it metube sh

Detener un contenedor

Graciosamente
docker stop [contenedor]

A lo bestia
docker kill <container id>

Estado del sistema

Procesos en ejecución
docker ps -a

Eliminar contenedores

Eliminar un contenedor detenido
docker rm <container id>

Eliminar todos los contenedores que han cerrado
docker container prune

Eliminar todo

docker rm -f $(docker ps -aq) && docker rmi -f $(docker images -aq)

Gestionar contenedores

Cambiar el nombre a un contenedor
docker rename [nombre de contenedor] [nuevo nombre]

Gestionar imágenes

Listar imágenes locales diposnibles
docker images

Importar un contenedor
docker pull [nombre de contenedor]

Borrar una imagen
docker image rm [nombre de la imagen]

Autoarranque de contenedores (systemd)

Extraido de:
https://mehmandarov.com/start-docker-containers-automatically/

1. Generar un unit de systemd sudo nano /etc/systemd/system/docker-<nombre_del_contenedor>.service

2. Editar el archivo y usar esto como plantilla:

[Unit]
Description=<descripcion_del_contenedor>
Requires=docker.service
After=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a <nombre_del_contenedor>
ExecStop=/usr/bin/docker stop -t 2 <nombre_del_contenedor>

[Install]
WantedBy=local.target