Docker - Introduction and Basic Commands

Jul 16, 2024

Docker - Introduction and Basic Commands

Introduction to Docker

  • Importance: Essential for software engineers, full-stack developers, backend developers, DevOps engineers.
  • First Encounter: Personal experience during initial phase of working.

What is Docker?

  • Docker is a platform that helps in creating, managing, and running containers.
  • Containers: Packages of application code and dependencies into a single unit, making deployments consistent across different environments.
  • Difference from Virtual Machines: Containers are lightweight, portable, and more efficient compared to traditional VMs.

Development Environment Challenges

  • Setup Variability: Different developers may use different OS (Windows, Mac) leading to inconsistencies.
  • Manual Errors: Risk of errors during manual setup of dependencies.
  • Version Conflicts: Specific application parts may require particular versions (e.g. Node v16).
  • Team Scalability: Difficulties in scaling up development environments for large teams.
  • Deployment Issues: Similar environment replication challenges when deploying to production servers.

Docker Solution

  • Consistency: Avoids the classic "It works on my machine" problem.
  • Portable and Lightweight: Containers can be shared across different machines.
    • Containers are built, updated, and destroyed easily.
  • Docker Hub: A platform to upload and share Docker images.
  • Docker Desktop: GUI tool to manage Docker images and containers.

Key Docker Concepts

  • Docker Images: Executable files containing instructions to create a container.
  • Docker Containers: Instances of Docker images, like objects in OOP from a class.

Basic Docker Commands

  • Pulling a Docker Image: docker pull <image_name>

  • Running a Docker Container: docker run <image_name>

  • Interact Mode: docker run -it <image_name>

Example Using Docker

  • Run Hello World Image: docker run hello-world

Differences Between Docker and Virtual Machines

  • Lightweight: Docker only virtualizes application layer, not the entire OS.
  • Faster and Smaller: Docker images are in MBs, while VMs can be in GBs.
  • Compatibility: VMs are compatible with any OS.

Conclusion

Docker simplifies development and deployment processes by providing consistent, portable, and lightweight containers.