Convert Figma logo to code with AI

pyouroboros logoouroboros

Automatically update running docker containers with newest available image

1,575
159
1,575
46

Top Related Projects

A process for automating Docker container base image updates.

Quick Overview

Ouroboros is an automated Docker container update tool. It monitors running Docker containers and updates them to the latest available image in real-time, without the need for restart or downtime. This project aims to simplify container management and ensure that containers are always running the most up-to-date versions.

Pros

  • Automatic updates of Docker containers without manual intervention
  • Supports various container runtime environments (Docker, Kubernetes, etc.)
  • Customizable update schedules and notification options
  • Lightweight and easy to deploy as a container itself

Cons

  • May lead to unexpected behavior if updates introduce breaking changes
  • Requires careful configuration to avoid disrupting critical services
  • Limited control over which specific versions to update to
  • Potential security risks if not properly configured

Getting Started

To get started with Ouroboros, you can run it as a Docker container:

docker run -d --name ouroboros \
  -v /var/run/docker.sock:/var/run/docker.sock \
  pyouroboros/ouroboros

For more advanced configuration, you can use environment variables:

docker run -d --name ouroboros \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e INTERVAL=300 \
  -e CLEANUP=true \
  -e IGNORE="mariadb influxdb" \
  pyouroboros/ouroboros

This example sets the update interval to 300 seconds, enables cleanup of old images, and ignores the "mariadb" and "influxdb" containers.

For Kubernetes deployment, you can use a Helm chart:

helm repo add ouroboros https://pyouroboros.github.io/ouroboros-charts
helm install ouroboros ouroboros/ouroboros

Remember to configure Ouroboros according to your specific needs and security requirements before deploying it in a production environment.

Competitor Comparisons

A process for automating Docker container base image updates.

Pros of Watchtower

  • More actively maintained with frequent updates
  • Supports multiple container runtimes (Docker, Podman)
  • Offers more configuration options and flexibility

Cons of Watchtower

  • Requires more setup and configuration
  • Can be resource-intensive for large deployments
  • Limited support for custom update schedules

Code Comparison

Watchtower:

version: "3"
services:
  watchtower:
    image: containrrr/watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    command: --interval 30

Ouroboros:

version: "3"
services:
  ouroboros:
    image: pyouroboros/ouroboros
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - INTERVAL=300

Both projects aim to automatically update Docker containers, but Watchtower offers more features and flexibility. Ouroboros is simpler to set up and use, making it suitable for smaller deployments or users who prefer a more straightforward approach. Watchtower's active development and broader feature set make it a better choice for complex environments or users who need fine-grained control over the update process.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

⚠️⚠️⚠️ ouroboros is no longer in development. It does its job (more or less) and the devs have succumb to real life! Please feel free to fork and maintain as you wish. We appreciate all of the support in the last year :). After support from the community, automated version bumps will continue to try to keep ouroboros in check with dependencies. ⚠️⚠️⚠️ Ouroboros Logo

Discord Release Python Version Docker Pulls Layers

Automatically update your running Docker containers to the latest available image.

The de-facto standard for docker update automation

Overview

Ouroboros will monitor (all or specified) running docker containers and update them to the (latest or tagged) available image in the remote registry. The updated container uses the same tag and parameters that were used when the container was first created such as volume/bind mounts, docker network connections, environment variables, restart policies, entrypoints, commands, etc.

  • Push your image to your registry and simply wait your defined interval for ouroboros to find the new image and redeploy your container autonomously.
  • Notify you via many platforms courtesy of Apprise
  • Serve metrics for trend monitoring (Currently: Prometheus/Influxdb)
  • Limit your server ssh access
  • ssh -i key server.domainname "docker pull ... && docker run ..." is for scrubs
  • docker-compose pull && docker-compose up -d is for fancier scrubs

Getting Started

More detailed usage and configuration can be found on the wiki.

Docker

Ouroboros is deployed via docker image like so:

docker run -d --name ouroboros \
  -v /var/run/docker.sock:/var/run/docker.sock \
  pyouroboros/ouroboros

This is image is compatible for amd64, arm32, and arm64 CPU architectures

or via docker-compose:

Official Example

Pip

Ouroboros can also be installed via pip:

pip install ouroboros-cli

And can then be invoked using the ouroboros command:

$ ouroboros --interval 300 --log-level debug

This can be useful if you would like to create a systemd service or similar daemon that doesn't run in a container

Examples

Per-command and scenario examples can be found in the wiki

Contributing

All contributions are welcome! Contributing guidelines are in the works