Scan Docker Images for Vulnerabilities With Trivy (and SBOMs)
Scan Docker images with Trivy: vulnerabilities, secrets and misconfigurations, severity filters, SBOMs in CycloneDX or SPDX, CI usage, and handling results.
Blog
Docker, Kubernetes, CI/CD, Git and automation for deploying and running software on servers.
Scan Docker images with Trivy: vulnerabilities, secrets and misconfigurations, severity filters, SBOMs in CycloneDX or SPDX, CI usage, and handling results.
Build images for x86 and ARM with docker buildx: builders, QEMU vs native nodes, --platform builds, pushing manifest lists, caching, CI, and pitfalls.
Update Docker containers safely: recreate instead of upgrading inside, steps for docker run and Compose, keeping data in volumes, rollbacks, and automation.
Create a Docker Swarm cluster across VPS nodes: init and join, deploy stacks from Compose files, scale services, rolling updates and secrets.
Instrument apps with OpenTelemetry: SDKs, auto-instrumentation, the OTel Collector, traces to Jaeger or Tempo, metrics to Prometheus, and sampling.
Deploy Docker Compose apps with Ansible: install Docker, copy Compose files and Vault secrets, docker_compose_v2, rolling updates with serial, and CI runs.
Why Docker-published ports ignore UFW, how to check exposure, and the fixes: bind to 127.0.0.1, a reverse proxy, the DOCKER-USER chain, ufw-docker.
Tag Docker images the right way: why latest is risky, version tags, pinning by digest, tagging your builds with versions and git SHAs, immutable tags.
Compare release strategies: recreate, rolling, blue-green, canary and feature flags, plus database migrations, rollbacks, and practical VPS setups with Nginx.
See what Docker uses with docker system df, then safely remove unused images, containers, build cache, volumes and logs — and automate it.
Use git bisect to binary-search history for the commit that broke something: manual good/bad marking, git bisect run with a test script, skipping, and tips.
Use docker exec to open a bash or sh shell in a running container, run one-off commands, act as root or another user and debug images.
Centralize server logs: structured logging, Loki vs ELK/OpenSearch vs Graylog, shipping with Alloy or Fluent Bit, LogQL queries, retention, and security.
Docker restart policies explained — no, on-failure, always, unless-stopped — and how they behave after crashes, reboots and manual stops.
Handle secrets safely in Docker: env vars vs secret files, Compose secrets and _FILE variables, BuildKit build secrets, keeping secrets out of images and Git.
Handle production incidents calmly: roles, severity levels, communication, a response process, runbook templates for common VPS problems, and postmortems.
Kubernetes vs Docker Compose on VPS servers: complexity, scaling, high availability, rolling updates, overhead, Swarm and k3s options, and when to switch.
The kubectl commands you use daily: contexts and namespaces, get and describe, logs and exec, apply and rollouts, scaling and debugging.
Terraform state explained: what tfstate holds, why local state is risky, S3-compatible remote backends, locking, secrets in state, state mv, rm and import.
Run WordPress in Docker Compose with MariaDB and Redis, persistent volumes, upload limits, WP-CLI, HTTPS via a reverse proxy, backups and updates.
Use docker logs and docker compose logs, find where logs are stored, cap log size with json-file or local drivers, and ship logs to journald.
Learn Terraform fundamentals: providers, resources, variables and outputs, the plan/apply workflow, state files, modules and a practical DNS example.
Self-host Drone CI with Docker: Gitea or GitHub OAuth, the server and Docker runner, a .drone.yml pipeline, secrets, image builds, licensing.
Practical Git commands: setup, status and diff, staging and commits, branches, merge and rebase, remotes, stash, history, undoing changes and tags.