- Overview of Docker and Virtual Machines (VMs).
- Agenda: Definitions, how they function, and guidance on workload suitability.
- Both Docker and VMs address the concept of virtualization.
- Virtualization: Using software to create an abstraction layer.
- VMs use a hypervisor as the abstraction software.
- Hypervisor: Helps VMs emulate a physical computer.
- Manages resource allocation between VMs on a single host.
- Each VM runs its own operating system and has virtual hardware (CPU, storage).
- Docker: An open source platform for containerization.
- Containers package applications and dependencies into portable units.
- Docker containers virtualize the operating system, not the hardware.
- Containers include the application, libraries, and dependencies.
- Docker Engine: Manages the lifecycle of containers.
- Handles container creation, running, and orchestration.
- Interacts with the host kernel for resource allocation and isolation.
- Uses cgroups (control groups) for resource allocation.
- Namespaces for restricting container access and visibility on the system.
- Standalone, executable packages containing software, runtime, libraries, and settings.
- Built using Docker files, which are documents with image creation instructions.
- Instances of Docker images running in the Docker engine.
- Isolated environments with necessary components for specific applications.
- Hypervisors come in two types: Type 1 (bare metal) and Type 2 (hosted).
- Virtual hardware in VMs includes components like CPU, memory, and storage.
- Each VM can have a different guest OS from the host and other VMs.
- Running diverse operating systems.
- Isolation: Each VM has a separate kernel and OS.
- Legacy applications: Suitable for specific OS versions or configurations.
- Ideal for microservices-based applications.
- Rapid development and deployment: Suited for agile and CI/CD practices.
- Resource efficiency: Smaller footprint, allows more containers on the same hardware.
- Choose based on application and infrastructure needs.
- Hybrid environments: Legacy apps on VMs, modern apps in Docker containers.
- Both technologies have transformed application deployment and management.