Jan 20th, 2023
Docker | Kubernetes |
---|---|
docker | podman |
docker-desktop | podman-desktop |
docker compose, docker swarm | podman compose, kubernetes yaml |
Tool for managing OCI containers and pods
# install podman
brew install podman
# create the virtual machine for podman
podman machine init
# start the virtual machine and set up the connection to podman
podman machine start
# stop the virtual machine
podman machine stop
# connect the vm podman-machine-default
podman machine ssh
# remove the virtual machine
podman machine rm
To create and start the virtual machine that is needed for podman:
podman machine init --cpus 2 --memory 2048 --disk-size 20
podman machine start
podman system connection default podman-machine-default-root
podman info
Useful podman commands:
# searches a registry or a list of registries for a matching image
podman search busybox
# Run a process in a new container
podman run -it docker.io/library/busybox
# Builds an image using instructions from one or more Containerfiles or Dockerfiles and a specified build context directory
podman build -t nginx https://git.io/Jf8ol
# Run a process in a new container
podman run -d -p 8080:80 nginx
# log in to quay
podman login quay.io
# tag the image
podman tag localhost/nginx quay.io/USERNAME/nginx
# push the image
podman push quay.io/USERNAME/nginx
# display the low-level information on containers and images
podman inspect quay.io/USERNAME/nginx
# list the running containers
podman ps
Browse, manage, inspect containers and images
brew install podman-desktop
It is recommended to use Kubernetes YAML instead of Compose.
You provide the information to kubectl
in a deployment.yaml
file. kubectl
converts the information to JSON when making the API request. Below is an example .yaml
file to for describing a Kubernetes object.
To create a Deployment using a .yaml
file:
kubectl apply -f [path-or-url-of-the-deployment file]
Kubernetes command-line interface
# install kubectl
brew install kubectl
# or
brew install kubernetes-cli
# Test to ensure the version you installed is up-to-date
kubectl version --client
# Check that kubectl is properly configured by getting the cluster state
kubectl cluster-info
If you see a message similar to the following, kubectl is not configured correctly or is not able to connect to a Kubernetes cluster.
The connection to the server <server-name:port> was refused - did you specify the right host or port?
For example, if you are intending to run a Kubernetes cluster on your laptop (locally), you will need a tool like Minikube to be installed first and then re-run the commands stated above.
If kubectl cluster-info returns the url response but you can’t access your cluster, to check whether it is configured properly, use:
kubectl cluster-info dump
minikube is local Kubernetes, focusing on making it easy to learn and develop for Kubernetes.
# install minikube
brew install minikube
# start your cluster
minikube start
# start minikube with the qemu driver
minikube start --driver=qemu
# start minikube with the podman driver only
minikube start --driver=podman
# make podman the default driver
minikube config set driver podman
By default, minikube executes Podman with sudo
. To use Podman without sudo
(i.e., Rootless Podman), set the rootless
property to true
:
minikube config set rootless true
For Rootless Podman, it is recommended to set --container-runtime
to containerd
:
minikube start --driver=podman --container-runtime=containerd