Containers#
- Containers offer the same abilities as a Virtual Machine but with less overhead.
- Containers do not virtualize a complete OS
Used for#
- Software Portability -- Running software consistentyl on different machines
- Isolation -- Keeping individual pieces of software separate from one another
- Scaling -- Increasing or decreasing resource sallocated to software as needed
- Automation -- Automating processes to save time and money
- Efficient Resources Usage -- Containers use resources efficiently, which saves money
Advantages#
- Isolation and portability of VMs
- More lightweight thean VMs - Less resources usage
- Faster than VMs -- Container can start in seconds
- Smaller than VMs -- Container images canb e measured in megabutes, not gigabytes
Limitations#
- Less flexible than VMs -- You can't run a Windows container on a Linux machine.
- Introduces new challenges around orchestration and automation
- A container runtime, which actually allows you to implement container. (Container is just a concept)
- Allows you to build and manage containers and container images
Other Container Runtimes#
- rkt
- Ultimately does the same thing as Docker.
- Is more linux like and may be easier for linux stuff
- Supports more container images formats than Docker
- containerd
- Emphasizes simplicity, robustness, portability
- Focused solely on running containers
- Does not has many features as Docker but may not be a downside