Skip to content

Intro to Docker

Aref Shafaei edited this page Mar 14, 2024 · 2 revisions

In this document we will give an overview of what Docker is and how it could be used. If you want to watch a video instead, we recommend this short youtube video.

What is Docker

  • Docker is a platform that allows developers to package and distribute applications along with their dependencies in lightweight containers.
  • These containers are isolated environments that ensure consistency across different computing environments, making it easier to deploy applications reliably.
  • Docker simplifies the process of building, shipping, and running applications, leading to faster development cycles and increased scalability.
  • It enables seamless integration with existing development workflows and infrastructure, facilitating collaboration among teams
  • Docker uses the host OS kernel, there is no custom or additional kernel inside running containers
  • Docker uses resource isolation features of the Linux kernel such as cgroups and
  • kernel namespaces to allow independent “containers” to run within a single Linux instance, avoiding the overhead of starting virtual machines

Traditional VMs vs Docker Containers

image


Docker Vocabulary

  • *Dockerfile - A Dockerfile is a text file containing instructions to build a Docker image, specifying the environment, dependencies, and commands needed to run an application inside a Docker container.
  • Docker Image - The basis of a Docker container. Represents a full application Specified via Dockerfiles.
  • Docker Container - The standard unit in which the application service resides and executes.
  • Docker Engine - Creates, ships and runs Docker containers deployable on a physical or virtual host locally, in a datacenter or cloud service provider.
  • Registry Service (Docker Hub or Docker Trusted Registry) - Cloud or server based storage and distribution service for your images image

Why Docker

  • Resource Efficiency
  • Uniformity
  • Scalability
  • Develop applications that work on any OS
  • Easy to share applications among teams
  • Easy to scale across multiple servers
  • Large applications can be broken into multiple containers - one for each microservice
  • Great solution for Cloud Computing
  • Big community and library of Docker Images
  • Removes Dependency on Infrastructure
  • Microservices can be decoupled with different cloud services

docker-compose and Kubernetes

docker-compose

Docker Compose is a tool for defining and running multi-container Docker applications. It uses YAML files to configure the services, networks, and volumes needed for the application. With a single command, docker-compose up, it can start and orchestrate the entire application stack. This simplifies development, testing, and deployment by encapsulating dependencies and configurations in a portable manner.

Kuberenetes

Kubernetes is an open-source container orchestration platform for automating deployment, scaling, and management of containerized applications. It provides features like load balancing, self-healing, and rolling updates. Kubernetes abstracts away the underlying infrastructure, enabling seamless deployment and management across various environments. Its declarative approach allows for efficient resource utilization and scalability in complex microservices architectures.

Feature Docker Compose Kubernetes
Orchestration Limited, suitable for single-host setups Comprehensive, supports multi-host environments
Scaling Manual scaling of containers Automatic scaling based on defined rules
High Availability Limited support for high availability Built-in support for high availability
Networking Basic networking features Advanced networking with service discovery
Complexity Simpler setup and usage Steeper learning curve but more powerful
Clone this wiki locally