Running a full Kubernetes cluster just to test a deployment is overkill for most development workflows. Minikube spins up a single-node Kubernetes cluster on your local machine, giving you a real K8s environment without the overhead of managing multiple nodes. This guide walks through installing Minikube on Rocky Linux 10 and AlmaLinux 10 using Docker as the container runtime.
Minikube supports multiple drivers (Docker, Podman, KVM, VirtualBox), but Docker is the most straightforward on RHEL-based systems. We’ll install Docker CE, kubectl, and Minikube, then bring up a working cluster and deploy a test workload. If you need a production multi-node setup instead, see our guide on installing a full Kubernetes cluster on Rocky Linux.
Current as of March 2026. Verified on Rocky Linux 10.1 (kernel 6.12) with Minikube 1.38.1, Kubernetes 1.35.1, Docker CE 29.3.0, SELinux enforcing
Prerequisites
Before starting, confirm you have the following in place:
- Rocky Linux 10 or AlmaLinux 10 (minimal or server install)
- Root or sudo access
- At least 2 CPUs and 2 GB free RAM (Minikube’s minimum requirement)
- Internet connectivity to pull container images
- Tested on: Rocky Linux 10.1 (kernel 6.12), Docker CE 29.3.0, kubectl v1.32.4, Minikube v1.38.1
Update your system packages first:
sudo dnf update -y
Install Docker CE
Minikube needs a container runtime. Docker CE works well on Rocky Linux 10 and AlmaLinux 10, but requires one extra package that catches people off guard: kernel-modules-extra. Without it, Docker fails to load the iptables kernel modules it depends on.
Install the kernel modules package:
sudo dnf install -y kernel-modules-extra
Reboot to load the new modules:
sudo reboot
After the system comes back up, add the official Docker repository. Docker provides a dedicated RHEL repo that works on Rocky and AlmaLinux:
sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
Install Docker CE and its dependencies:
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Start and enable the Docker service:
sudo systemctl enable --now docker
Confirm Docker is running:
sudo systemctl status docker
You should see active (running) in the output:
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: disabled)
Active: active (running) since Tue 2026-03-24 14:22:10 UTC; 5s ago
Main PID: 2341 (dockerd)
Tasks: 8
Memory: 42.1M
CGroup: /system.slice/docker.service
└─2341 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Verify the Docker version:
docker --version
The output confirms Docker CE 29.3.0:
Docker version 29.3.0, build e2c8028
SELinux was in enforcing mode during testing and Docker worked without any policy adjustments. Rocky Linux 10 ships with SELinux policies that accommodate Docker out of the box.
Install kubectl
kubectl is the command-line tool for interacting with Kubernetes clusters. Minikube bundles its own kubectl, but having a standalone install gives you more flexibility (and it’s what you’ll use with real clusters later). For a full reference of kubectl commands, check out our kubectl cheat sheet.
Download the latest stable kubectl binary:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
Install it to /usr/local/bin:
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
Check the installed version:
kubectl version --client
This should show v1.32.4 or newer:
Client Version: v1.32.4
Kustomize Version: v5.5.0
Install Minikube
Minikube ships as a single binary. Download the latest RPM package and install it directly:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-latest.x86_64.rpm
sudo rpm -Uvh minikube-latest.x86_64.rpm
Verify the installation:
minikube version
The output confirms Minikube v1.38.1:
minikube version: v1.38.1
commit: 8a6a7a05ba949a1e1e5a37bbcaa821ef6a89da10
Start a Kubernetes Cluster
With Docker, kubectl, and Minikube installed, bring up a single-node Kubernetes cluster. The --driver=docker flag tells Minikube to use Docker as its container runtime. If you’re running as root, the --force flag is required:
minikube start --driver=docker --force
Minikube pulls the necessary images and bootstraps the cluster. This takes a couple of minutes on the first run:
😄 minikube v1.38.1 on Rocky 10.1
❗ minikube skips various validations when --force is supplied; this may lead to unexpected behavior
✨ Using the docker driver based on user configuration
🧯 The requested memory allocation of 1953MiB does not leave room for system overhead (total system memory: 1953MiB). You may face stability issues.
💡 Suggestion: Start minikube with less memory allocated: 'minikube start --memory=1400mb'
📌 Using Docker driver with root privileges
👍 Starting "minikube" primary control-plane node in "minikube" cluster
🚜 Pulling base image v0.0.47 ...
💾 Downloading Kubernetes v1.35.1 preload ...
🔥 Creating docker container (CPUs=2, Memory=1953MB) ...
🐳 Preparing Kubernetes v1.35.1 on Docker 28.1.1 ...
▪ Generating certificates and keys ...
▪ Booting up control plane ...
▪ Configuring RBAC rules ...
🔗 Configuring bridge CNI (Container Networking Interface) ...
🔎 Verifying Kubernetes components...
▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🌟 Enabled addons: storage-provisioner, default-storageclass
🏄 Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
If you’re running as a non-root user, drop the --force flag. You’ll need to add your user to the docker group first:
sudo usermod -aG docker $USER
newgrp docker
minikube start --driver=docker
Verify the Cluster
Once Minikube finishes, confirm the cluster node is ready:
kubectl get nodes
The node should show Ready status:
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane 72s v1.35.1
Check the cluster info:
kubectl cluster-info
This shows the API server and CoreDNS endpoints:
Kubernetes control plane is running at https://192.168.49.2:8443
CoreDNS is running at https://192.168.49.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
Let’s deploy a quick Nginx pod to make sure workloads actually run:
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --type=NodePort --port=80
Wait a few seconds, then check the pod status:
kubectl get pods
The Nginx pod should be running:
NAME READY STATUS RESTARTS AGE
nginx-bf5d5cf98-xkfz7 1/1 Running 0 18s
Get the service URL through Minikube:
minikube service nginx --url
Minikube returns a URL you can curl to verify Nginx responds:
http://192.168.49.2:31245
Test the endpoint:
curl $(minikube service nginx --url)
You should see the default Nginx welcome page HTML in the response. The cluster is working. Clean up the test deployment when done:
kubectl delete deployment nginx
kubectl delete service nginx
Useful Minikube Commands
Here are the commands you’ll use most often when working with Minikube:
| Command | Description |
|---|---|
minikube start | Start the cluster (resumes if previously stopped) |
minikube stop | Stop the cluster without deleting it |
minikube delete | Delete the cluster and all its data |
minikube status | Show current cluster status |
minikube dashboard | Open the Kubernetes web dashboard |
minikube addons list | List available and enabled addons |
minikube addons enable metrics-server | Enable a specific addon |
minikube ssh | SSH into the Minikube node |
minikube logs | View cluster logs for troubleshooting |
Stop and Delete the Cluster
When you’re done working, stop the cluster to free up resources. Stopping preserves the cluster state so you can resume later:
minikube stop
The cluster shuts down cleanly:
✋ Stopping node "minikube" ...
🛑 Powering off "minikube" via SSH ...
🛑 1 node stopped.
To start it again, just run minikube start. It picks up where you left off.
If you want to wipe everything and start fresh, delete the cluster entirely:
minikube delete
This removes the VM, Docker containers, and all cluster data:
🔥 Deleting "minikube" in docker ...
🔥 Deleting container "minikube" ...
🔥 Removing /root/.minikube/profiles/minikube ...
💀 Removed all traces of the "minikube" cluster.
Going Further
With Minikube running on Rocky Linux 10, here are some next steps worth exploring:
- Enable the metrics-server addon (
minikube addons enable metrics-server) to usekubectl topfor monitoring pod resource usage - Try multi-node clusters with
minikube start --nodes 3to simulate a more realistic environment for testing scheduling and affinity rules - Use the Minikube dashboard (
minikube dashboard) for a visual overview of workloads, services, and cluster health - Deploy a full application stack with Helm charts to practice production-like deployments. The official Minikube documentation covers Helm integration and other advanced features
- Set up a production cluster when you outgrow Minikube. Our guide on deploying a multi-node Kubernetes cluster on Rocky Linux covers kubeadm-based setup with HA control planes. We also have a guide for Minikube on Debian if you work with Debian-based systems