a DevOps toolbox running in Docker
4.7K
A Docker image that bundles 20+ Kubernetes and infrastructure tools on Debian Linux. Pull it, start a container, and you have a working cluster in minutes.

docker pull brakmic/devops:latest
Linux / macOS:
docker run --rm -it \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ${PWD}:/home/minidevops/local \
--network=host \
brakmic/devops:latest
Windows (PowerShell):
docker run --rm -it `
-v //var/run/docker.sock:/var/run/docker.sock `
-v ${PWD}:/home/minidevops/local `
--network=host `
brakmic/devops:latest
Kubernetes 1.35+ requires cgroup v2. Docker Desktop on Windows must use the WSL 2 backend with the unified cgroup hierarchy enabled. Without this, Kind clusters fail during kubelet startup with a health check timeout.
%USERPROFILE%\.wslconfig:[wsl2]
kernelCommandLine = cgroup_no_v1=all systemd.unified_cgroup_hierarchy=1
wsl --shutdown
Verify the change by running docker info --format '{{.CgroupVersion}}'. The output should be 2.
Once inside the container, create a cluster:
./create_cluster.sh my-cluster
The socket mount lets the container talk to the host Docker daemon. The local volume mount at /home/minidevops/local persists files across container restarts. The cluster script creates a Kind cluster and deploys the NGINX Ingress Controller.
| Tool | Version | Purpose |
|---|---|---|
| kubectl | 1.32.3 | Kubernetes CLI, aliased to kubecolor |
| helm | 4.2.3 | Kubernetes package manager |
| terraform | 1.15.8 | Infrastructure as code |
| kind | 0.32.0 | Local Kubernetes clusters in Docker |
| k9s | 0.51.0 | Terminal UI for Kubernetes |
| stern | 1.34.0 | Multi-pod log tailing |
| kubecolor | 0.6.0 | Colorized kubectl output |
| skaffold | 2.24.0 | Continuous development for Kubernetes |
| flux | 2.9.3 | GitOps toolkit |
| kubeseal | 0.38.4 | Encrypt secrets for Git storage |
| operator-sdk | 1.42.3 | Build Kubernetes operators |
| kubelogin | 0.2.19 | Microsoft Entra authentication for Kubernetes and AKS |
| lazydocker | 0.25.2 | Terminal UI for Docker |
| popeye | 0.22.1 | Cluster sanitizer and linter |
| krew | 0.5.0 | kubectl plugin manager |
| kubectx | 0.11.0 | Switch between clusters |
| kubens | 0.11.0 | Switch between namespaces |
| usql | 0.21.4 | Universal SQL client |
| docker compose | v2 | Multi-container orchestration |
The image includes bash with completions, nano with syntax highlighting, vim, git, gcc, make, python3, pip3, pipenv, curl, htop, tree, openssl, iputils-ping, dnsutils, and hping3.
Python 3 and Pipenv are pre-configured with a virtual environment. Run pipenv install <package> to add dependencies and pipenv run python my_script.py to execute scripts.
The config.yml file contains a Kind cluster configuration you can adjust. The included create_cluster.sh script reads this config, creates the cluster, and deploys NGINX Ingress.
./create_cluster.sh my-cluster

On Windows, use the PowerShell equivalent:
.\create_cluster.ps1 -ClusterName MyClusterName

To keep your cluster across container restarts, copy .kube/config to the local volume before exiting:
cp ~/.kube/config ~/local/kubeconfig-backup
On the next run, restore it:
cp ~/local/kubeconfig-backup ~/.kube/config
Available on Docker Hub.
kubectl get pods -n kube-system
helm install prometheus prometheus-community/prometheus
terraform init && terraform apply
operator-sdk init --domain=example.com --repo=github.com/example-inc/my-operator
operator-sdk create api --group cache --version v1alpha1 --kind Memcached --resource --controller
flux bootstrap github \
--owner=<your-user> \
--repository=<your-repo> \
--branch=main \
--path=./clusters/my-cluster \
--personal
docker compose up -d
kind create cluster --name my-cluster

lazydocker
popeye -n kube-system -o yaml
kubeseal --cert=publicCert.pem --format=yaml < secret.yaml > sealedsecret.yaml
stern -n dev app=myapp
skaffold dev
kubelogin convert-kubeconfig -l azurecli
kubectl krew install ctx
kubectx my-cluster
kubens dev
usql postgres://user:pass@localhost/mydb -c "SELECT count(*) FROM orders"
Content type
Image
Digest
sha256:91fe22a0a…
Size
703.6 MB
Last updated
about 2 months ago
docker pull brakmic/devops