Container Technology Wiki
Docker Containers
- Docker 101
- Basic Docker Operations
- Docker Administration
- Docker Security Resources
- Docker OS Interaction
- Docker With Other Tools
- Docker API
- Docker Compose
Kubernetes Guide
- Kubernetes 101
-
Kubernetes Architecture
- Kubernetes Ecosystem
- Kubernetes Nodes
- Kubernetes Pods
- Kubernetes Controllers and Control Plane
- Kubernetes DaemonSets
- Container Runtime Interface
- Working with Containers in Kubernetes
- Working with Images in Kubernetes
- Workloads in Kubernetes
- Kubernetes Services
- Kubernetes Jobs
- Kubernetes and Microservices
- Kubernetes Operators
- Kubernetes Persistent Volumes
- Kubernetes Advantages and Use Cases
-
Kubernetes Operations
- Installing Kubernetes
- Kubernetes Configuration
- Kubernetes Monitoring
- Kubernetes Debugging and Troubleshooting
- Kubernetes Load Balancing
- Kubernetes Security
- Kubernetes Networking
- Kubernetes Storage Management
- Kubernetes in Production
- Working with Kubernetes Ingress
- Kubernetes Security Best Practices
- Managing Kubernetes with Kops and Kubeadm
- Kubernetes Secrets
- Kubernetes Autoscaling
- Kubernetes ConfigMap
- Kubernetes Namespace
- Kubernetes Authentication
- Kubernetes Vault
- CIS Kubernetes Benchmark
- Kubernetes Cluster
- Kubernetes as a Service
- Managed Kubernetes
- Kubernetes Distributions
- Enterprise Kubernetes
Container Basics
- Container Architecture
- Advantages of Containers
- Container Challenges
- Containers and IT Infrastructure
- Enterprise DevOps
- eBPF
- eBPF Linux
Containers Ops
- Container Security Management
- Container Deployment
- Container Monitoring
- Container Automation
- Container Multitenancy
- Container Backup and Disaster Recovery
- Prometheus Monitoring
Container Security
- Container Security Best Practices
- Containers for DevSecOps
- Container Vulnerabilities and Threats
- Container Vulnerability Scanning
- Container Secrets Management
- Container Access Control
- Container Audits and Compliance
- Application Whitelisting
- Zero Trust Networks
- Network Segmentation for Containers
- Container Isolation
- Open Source Security Tools for Containers
- Open Source Vulnerability Scanner
- Open Source Security Tools
- Container Security Tools
Cloud Native Computing Foundation
- AWS EC2 Security
- Cloud-Native Applications
- Cloud-Native Architecture
- Cloud Native AWS
- Cloud Native Development
- Cloud Native Infrastructure
- Cloud Native Security
- Envoy Proxy
- Harbor Kubernetes
- Open Policy Agent
- Oracle Cloud Security
- SaaS Cloud Security
- Security Issues in Cloud Computing
- SPIFFE
- VMware Tanzu
Serverless Computing
- Serverless Architecture
- AWS Lambda
- Azure Functions
- Google Cloud Functions
- Serverless Security
- On-Premises Serverless Platforms
- Function as a Service - FaaS
- Knative
- Serverless vs Containers
Container Platforms
- Containers and Cloud Computing
- Container Operating Systems
- Red Hat Openshift
- Pivotal Container Service
- Multi-Cloud Strategy
- Kubernetes vs Cloud Foundry
- CWPP
Other Container Engines
Kubernetes Alternatives
Container Community and Events
- Container Technology Wiki
- Docker Containers
- Docker 101
- Docker vs. Kubernetes - 8 Industry Opinions
Docker vs. Kubernetes - 8 Industry Opinions
Docker Swarm and Kubernetes are two popular choices for container orchestration. We collected 8 industry opinions on which orchestration tool is better and which is more useful for different use cases.
In this page: what the community is saying on Docker vs. Kubernetes
What is Kubernetes
Kubernetes is a container orchestration system, which can be used to manage large numbers of containers on top of physical infrastructure. Kubernetes was built by Google based on their experience running massive amount of containers in production.
It’s important to understand that unlike the popular Docker Engine, Kubernetes is not a container engine. It is a system that helps you manage containers. Typically Kubernetes deployments use Docker as the underlying container engine, but can also be used with other container engines such as rkt.
The diagram below shows the Kubernetes architecture. In Kubernetes, the master node places container workloads in user pods, on worker nodes or on the master node itself.
Additional Kubernetes components include:
etcd: Stores configuration data, for access by the Kubernetes Master’s API Server.
API Server: The management hub for the Kubernetes master node, allowing communication between other components.
ontroller Manager: Scales workloads up and down to ensure the cluster reaches its desired state.
Scheduler: This component places the workload on the appropriate node – in this case all workloads will be placed locally on your host.
Kubelet: Receives pod specifications from the API Server and manages running pods.
Pods: Kubernetes deploys and schedules containers in groups called pods. All the containers in a single pod run on the same node, and share resources on the physical host.
Important Kubernetes concepts:
Deployments: Used to create and manage a group of pods. Kubernetes supports service deployments, which enable scaling across multiple nodes.
Services: Endpoints that can be connected to pods using label selectors. A service round-robins requests between pods. Services are the external point of contact for container workloads, accessible via an internal DNS server.
Labels: Key-value pairs that can be used to find multiple objects within the Kubernetes cluster and update them in bulk.
What is Docker Swarm
Docker swarm mode allows you to manage a cluster of Docker Engines, natively within the Docker platform. You can use the Docker CLI to create a swarm, deploy application services to a swarm, and manage swarm behavior.
Note #1: When people compare Kubernetes to Docker, they typically mean to compare it to Docker Swarm, the container orchestration engine offered within the Docker platform. It is not accurate to compare Kubernetes to “docker”, the Docker Container Engine, because they have different functions. Kubernetes or Docker Swarm work together with the Docker Container Engine - the former manage and orchestrate containers, and the Docker Engine runs the containers themselves.
Note #2: As of the time of this writing in late 2017, Docker announced it will support both Swarm and Kubernetes as orchestration engines. Some believe that with support for Kubernetes, Docker Swarm will become obsolete. Others say that Swarm will continue to be relevant, as a simpler orchestration tool which is suitable for organizations with smaller container workloads.
Swarm’s capabilities include coordination between containers, allocating tasks to groups of containers, health checks and lifecycle management of containers, redundancy and failover, scaling containers up and down based on load, and rolling updates.
Docker Swarm components:
Swarm – a swarm consists of multiple Docker hosts which run in swarm mode and act as managers and workers. Task – the swarm manager distributes a specific number of tasks among the nodes, based on the service scale you specify. A task carries a Docker container and the commands to run inside the container. Once a task is assigned to a node, it cannot move to another node. It can only run on the assigned node or fail.
Service – a service is the definition of the tasks to execute on the manager or worker nodes. When you create a service, you specify which container image to use and which commands to execute inside running containers.
Nodes – a swarm node is an individual Docker Engine participating in the swarm. You can run one or more nodes on a single physical computer or cloud server, but production swarm deployments typically include Docker nodes distributed across multiple machines.
Manager nodes – dispatch units of work called tasks to worker nodes. Manager nodes also perform orchestration and cluster management functions.
Leader node – manager nodes elect a single leader to conduct orchestration tasks, using the Raft consensus algorithm.
Worker nodes – receive and execute tasks dispatched from manager nodes. By default manager nodes also run services as worker nodes. An agent runs on each worker node and reports on the tasks assigned to it to its manager node.
Load balancing – the swarm manager uses ingress load balancing to expose the services running on the Docker swarm, enabling external access.
Comparing Mindshare
| Mindshare Metric | Kubernetes | Docker Swarm |
|---|---|---|
| Pages Indexed by Google Past Year | 1,190,000 | 135,000 |
| News Stories Past Year | 36,000 | 3,610 |
| Google Monthly Searches | 165,000 | 33,100 |
| Github Stars | 28,988 | 4,863 |
| Github Commits | 58,029 | 3,493 |