Monday, September 18, 2023

Docker vs Kubernetes: A Comparison of Commands

 

This document provides a side-by-side comparison of common commands for Docker and Kubernetes, two widely used containerization and orchestration platforms.

Building and Managing Containers:

TaskDocker CommandKubernetes Command
Building an imagedocker build -t <image-name> .N/A (Kubernetes relies on Docker images)
Pushing an image to a registrydocker push <image-name>N/A (Handled by container registry, not Kubernetes)
Pulling an image from a registrydocker pull <image-name>kubectl apply -f <image-name> (using YAML)
Listing imagesdocker imagesN/A (Kubernetes doesn't manage local images)
Removing an imagedocker rmi <image-id>N/A (Images are managed by Docker)

Running and Managing Containers:

TaskDocker CommandKubernetes Command
Running a containerdocker run -d --name <name> <image>kubectl run <name> --image=<image>
Stopping a containerdocker stop <container-id>kubectl delete pod <name> (or scale down)
Restarting a containerdocker restart <container-id>N/A (Recreate the pod with a new image version)
Listing running containersdocker pskubectl get pods
Inspecting a containerdocker inspect <container-id>N/A (Use kubectl describe pod <name>)
Executing a command in a containerdocker exec -it <container-id> <command>kubectl exec -it <pod-name> -- <command>
Removing a containerdocker rm <container-id>kubectl delete pod <name>
Viewing container logsdocker logs <container-id>kubectl logs <pod-name>

Networking and Services:

TaskDocker CommandKubernetes Command
Exposing a port in a container-p <host-port>:<container-port>Defined in YAML or kubectl expose command
Creating a networkdocker network create <name>N/A (Kubernetes manages networking)
Creating a service (LoadBalancer)N/A (Handled by orchestration)kubectl expose deployment <name> --type=LoadBalancer --port=<port>
Creating a service (NodePort)N/A (Handled by orchestration)kubectl expose deployment <name> --type=NodePort --port=<port>
Creating a service (ClusterIP)N/A (Handled by orchestration)kubectl expose deployment <name> --type=ClusterIP --port=<port>

Volumes and Storage:

TaskDocker CommandKubernetes Command
Creating a volumedocker volume create <name>kubectl apply -f <volume-definition.yaml>
Attaching a volume to a containerdocker run -v <volume-name>:/path ...Defined in YAML or kubectl attach command
Creating a persistent volume (PV)N/A (Handled by Kubernetes)kubectl apply -f <persistent-volume.yaml>
Creating a persistent volume claim (PVC)N/A (Handled by Kubernetes)kubectl apply -f <persistent-volume-claim.yaml>

Configuration and Secrets:

TaskDocker CommandKubernetes Command
Setting environment variables-e <key=value>Defined in YAML or kubectl create configmap
Creating a secretdocker secret create <name> <file>kubectl create secret generic <name> --from-file=<path>
Using environment variables from filedocker run --env-file=<file> ...Defined in YAML or kubectl create secret generic

Miscellaneous:

TaskDocker CommandKubernetes Command
Creating a namespaceN/A (Handled by Kubernetes)kubectl create namespace <name>
Switching between contextsdocker context use <context>kubectl config use-context <context>
Scaling deploymentsN/A (Handled by orchestration)kubectl scale deployment <name> --replicas=<count>

This comparison provides a quick reference for common commands used in Docker and Kubernetes. It's important to note that Docker focuses on containerization, while Kubernetes is an orchestration platform for managing containerized applications at scale. As a result, some tasks are handled differently or not applicable in one platform versus the other.

No comments:

Post a Comment