1. Installation
1.1. Docker
To install Docker, follow the official instructions for setting up the apt repository and installing the required packages.
Verify the installation by running an example container:
docker run hello-world
You should see the following output:
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
1.2. Kubectl
kubectl
is the command-line client for K8s. To install kubectl
:
sudo snap install kubectl --classic
As we do not have a running K8s cluster yet, there should be no available contexts for K8s at the moment:
$ kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
We will create a cluster in the following steps.
1.3. Minikube
Obtain the Minikube .deb
package using curl
:
# fetch
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb
# install
sudo dpkg -i minikube_latest_amd64.deb
In the above code, -LO
tells curl
to resolve any redirects, and to save the file using the same filename as in the URL path.
1.3.1. Starting Minikube
$ minikube start
😄 minikube v1.33.1 on Ubuntu 24.04
✨ Automatically selected the docker driver. Other choices: kvm2, virtualbox, ssh, none
📌 Using Docker driver with root privileges
👍 Starting "minikube" primary control-plane node in "minikube" cluster
🚜 Pulling base image v0.0.44 ...
🔥 Creating docker container (CPUs=2, Memory=7800MB) ...
🐳 Preparing Kubernetes v1.30.0 on Docker 26.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
1.3.2. Multiple nodes
Note that we could start multiple nodes on the same host. Such a setup could be used for testing networking setups locally before deploying to multiple physical nodes. For an example, see https://pet2cattle.com/2021/01/multinode-minikube.
minikube start -n 2 -p multinode-demo