Comprueba las actualizaciones de tus imágenes docker con cup

2024-10-14

Cup permite comprobar, de una manera fácil y sencilla, si las imágenes de tus contenedores Docker tienen actualizaciones disponibles, además de exigir pocos recursos a tu máquina. El proyecto está inspirado en What’s up Docker?

Características

  • Es muy rápido. Aprovecha al máximo tu CPU y está altamente optimizada
  • Soporta Docker Hub, ghcr.io, Quay, lscr.io e incluso Gitea (o derivados)
  • CLI e interfaz web para comprobar los contenedores en cualquier momento.
  • Puedes utilizar una imagen Docker o un pequeño binario para su ejecución, en el momento de escribir este artículo, es de solo 4.7 MB.
  • Dispone de salida JSON, tanto para la interfaz CLI como web, para que puedas conectar Cup con otras integraciones.

Limitaciones

Cup no puede desencadenar tus integraciones. Si quieres que eso suceda automáticamente, puedes utilizar What’s up Docker?. Cup fue creada para ser simple. Los datos están ahí, y depende de ti para recuperarlos (por ejemplo, ejecutando cup -r con un cronjob o solicitando periódicamente la url /json url del servidor)

Instalación

Podemos ejecutar Cup mediante un fichero binario o mediante Docker

Binario

Descarga la última versión para tu plataforma desde https://github.com/sergi0g/cup/releases/latest

Docker

Abre una terminal y ejecuta el siguiente comando.

docker pull ghcr.io/sergi0g/cup

Docker compose

Si prefieres utilizar docker compose, este es su fichero yml

services:
  cup:
    image: ghcr.io/sergi0g/cup:latest # you can use another tag if you like
    restart: unless-stopped
    command: serve
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - "8002:8000"

Utilización

CLI

Las opciones disponibles para su ejecución desde la terminal

cups -h
Usage: cup [OPTIONS] [COMMAND]

  Commands:
    check
    serve
    help   Print this message or the help of the given subcommand(s)

  Options:
    -s, --socket <SOCKET>
    -h, --help             Print help
    -V, --version          Print version

Para comprobar si existen actualizaciones para todas las imágenes

  • Binario:

    ./cup check -i
    
    
    ✓ Done!
     ghcr.io/sergi0g/cup:latest                                                            Up to date
     ghcr.io/medama-io/medama:latest                                                       Up to date
     qmcgaw/ddns-updater:latest                                                            Up to date
     portainer/portainer-ce:latest                                                         Up to date
     ghcr.io/umami-software/umami:postgresql-latest                                        Up to date
     dpage/pgadmin4:latest                                                                 Up to date
     jc21/nginx-proxy-manager:latest                                                       Up to date
     tensorchord/pgvecto-rs:pg16-v0.2.0                                                    Up to date
    
  • Docker

    docker run -v /var/run/docker.sock:/var/run/docker.sock -t ghcr.io/sergi0g/cup check -i
    
    ✓ Done!
     dpage/pgadmin4:latest                                                                 Up to date
     ghcr.io/medama-io/medama:latest                                                       Up to date
     ghcr.io/sergi0g/cup:latest                                                            Up to date
     ghcr.io/umami-software/umami:postgresql-latest                                        Up to date
     jc21/nginx-proxy-manager:latest                                                       Up to date
     portainer/portainer-ce:latest                                                         Up to date
     qmcgaw/ddns-updater:latest                                                            Up to date
     tensorchord/pgvecto-rs:pg16-v0.2.0                                                    Up to date
    

Comprobar las actualizaciones de una imagen específica, por ejemplo medama

  • Binario

    ./cup check ghcr.io/medama-io/medama:latest
    
    ghcr.io/medama-io/medama:latest is up to date
    
  • Docker

    docker run -v /var/run/docker.sock:/var/run/docker.sock -t ghcr.io/sergi0g/cup check ghcr.io/medama-io/medama:latest
    
    ghcr.io/medama-io/medama:latest is up to date
    

Server

Cup dispone de una webgui a través de su servidor

  • Binario

    ./cup serve
    
    2024-07-22T11:25:08.343786Z  INFO xitca_server::net: Started Tcp listening on: Some(0.0.0.0:8000)
    2024-07-22T11:25:08.344124Z  WARN xitca_server::server::future: ServerFuture::wait is called from within tokio context. It would block current thread from handling async tasks.
    2024-07-22T11:25:08.344839Z  INFO xitca_server::worker: Started xitca-server-worker-0
    2024-07-22T11:25:08.345173Z  INFO xitca_server::worker: Started xitca-server-worker-1
    2024-07-22T11:25:08.345501Z  INFO xitca_server::worker: Started xitca-server-worker-2
    2024-07-22T11:25:08.345709Z  INFO xitca_server::worker: Started xitca-server-worker-3
    
  • Docker

    docker run -v /var/run/docker.sock:/var/run/docker.sock -p 8000:8000 -t ghcr.io/sergi0g/cup serve
    
    2024-07-22T11:08:49.712071Z  INFO xitca_server::net: Started Tcp listening on: Some(0.0.0.0:8000)
    2024-07-22T11:08:49.713392Z  WARN xitca_server::server::future: ServerFuture::wait is called from within tokio context. It would block current thread from handling async tasks.
    2024-07-22T11:08:49.715206Z  INFO xitca_server::worker: Started xitca-server-worker-0
    2024-07-22T11:08:49.715813Z  INFO xitca_server::worker: Started xitca-server-worker-1
    2024-07-22T11:08:49.716527Z  INFO xitca_server::worker: Started xitca-server-worker-2
    2024-07-22T11:08:49.716762Z  INFO xitca_server::worker: Started xitca-server-worker-3
    

Esto lanzará el servidor en el puerto 8000. Para acceder a la web-ui, desde el navegador introducimos http://-tu-ip.:8000 (cambia TU IP con la dirección IP de la máquina donde se ejecuta Cup.)

Podemos utilizar un puerto diferente al 8000, por defecto, por ejemplo el 8002, utilizando el parámetro -p

  • Binario:

    ./cup serve -p 8002
    
    Serving on http://0.0.0.0:8002
    2024-07-22T11:25:08.343786Z  INFO xitca_server::net: Started Tcp listening on: Some(0.0.0.0:8002)
    2024-07-22T11:25:08.344124Z  WARN xitca_server::server::future: ServerFuture::wait is called from within tokio context. It would block current thread from handling async tasks.
    2024-07-22T11:25:08.344839Z  INFO xitca_server::worker: Started xitca-server-worker-0
    2024-07-22T11:25:08.345173Z  INFO xitca_server::worker: Started xitca-server-worker-1
    2024-07-22T11:25:08.345501Z  INFO xitca_server::worker: Started xitca-server-worker-2
    2024-07-22T11:25:08.345709Z  INFO xitca_server::worker: Started xitca-server-worker-3
    2024-07-22T11:25:26.737650Z  INFO request{method=GET uri=/}: on_request: serving request
    2024-07-22T11:25:26.761967Z  INFO request{method=GET uri=/}: on_response: sending response
    

    Si utilizas Docker solamente cambia -p PUERTO:PUERTO

    • Docker:
    docker run -v /var/run/docker.sock:/var/run/docker.sock -p 8002:8000 -t ghcr.io/sergi0g/cup serve
    
    2024-07-22T11:30:07.468720Z  INFO xitca_server::net: Started Tcp listening on: Some(0.0.0.0:8000)
    2024-07-22T11:30:07.469122Z  WARN xitca_server::server::future: ServerFuture::wait is called from within tokio context. It would block current thread from handling async tasks.
    2024-07-22T11:30:07.470193Z  INFO xitca_server::worker: Started xitca-server-worker-0
    2024-07-22T11:30:07.471450Z  INFO xitca_server::worker: Started xitca-server-worker-2
    2024-07-22T11:30:07.471450Z  INFO xitca_server::worker: Started xitca-server-worker-1
    2024-07-22T11:30:07.472043Z  INFO xitca_server::worker: Started xitca-server-worker-3
    

Espero que te haya gustado, pasa un gran día 🐧


Ingrese la dirección de su instancia