Skip to Content
Go Realm v1 is released 🎉
DevOpsDockerArchitechure & Lifecycle

Docker Architecture & Lifecycle

āĻāχ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āϟāϟāĻŋāϰ āĻŽā§‚āϞ āωāĻĻā§āĻĻ⧇āĻļā§āϝ āĻšāϞ⧋ Docker-āĻāϰ āφāĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āϚāĻžāϰāĻžāϞ āĻ•āĻŽā§āĻĒā§‹āύ⧇āĻ¨ā§āϟ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇āϰ āϞāĻžāχāĻĢāϏāĻžāχāϕ⧇āϞ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻ¸ā§āĻŦāĻšā§āĻ› āϧāĻžāϰāĻŖāĻž āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰāĻžāĨ¤

1. Docker Architecture

Docker āĻāĻ•āϟāĻŋ Client-Server Architecture āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤ āĻāϰ āĻ•āĻžāĻ°ā§āϝāĻĒāĻĻā§āϧāϤāĻŋ āĻĒā§āϰāϧāĻžāύāϤ āϤāĻŋāύāϟāĻŋ āĻŽā§‚āϞ āωāĻĒāĻžāĻĻāĻžāύ⧇āϰ āωāĻĒāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ āĻ—āĻ āĻŋāϤ: Docker Client, Docker Host (Daemon), āĻāĻŦāĻ‚ Docker RegistryāĨ¤

āĻĒā§āϰāϧāĻžāύ āωāĻĒāĻžāĻĻāĻžāύāϏāĻŽā§‚āĻš (Core Components)

ā§§. Docker Client (The CLI)

Docker āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āϜāĻ¨ā§āϝ āĻāϟāĻŋāχ āĻĒā§āϰāϧāĻžāύ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏāĨ¤ āϝāĻ–āύ āφāĻĒāύāĻŋ docker build, docker run, āĻŦāĻž docker pull-āĻāϰ āĻŽāϤ⧋ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϰāĻžāύ āĻ•āϰ⧇āύ, āϤāĻ–āύ Docker Client āϏ⧇āχ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāϟāĻŋ Docker Daemon-āĻāϰ āĻ•āĻžāϛ⧇ āĻĒā§āϰ⧇āϰāĻŖ āĻ•āϰ⧇āĨ¤ Client āĻāĻŦāĻ‚ Daemon āĻāϕ⧇ āĻ…āĻĒāϰ⧇āϰ āϏāĻžāĻĨ⧇ REST API, UNIX Sockets, āĻŦāĻž Network Interface-āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āϝ⧋āĻ—āĻžāϝ⧋āĻ— āĻ•āϰ⧇āĨ¤

⧍. Docker Daemon (dockerd)

āĻāϟāĻŋ Docker-āĻāϰ “āĻŽāĻ¸ā§āϤāĻŋāĻˇā§āĻ•â€ āĻŦāĻž āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϏāĻžāχāĻĄ āĻĒā§āϰāϏ⧇āϏ āϝāĻž āĻšā§‹āĻ¸ā§āϟ āĻ…āĻĒāĻžāϰ⧇āϟāĻŋāĻ‚ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āĻŦā§āϝāĻžāĻ•āĻ—ā§āϰāĻžāωāĻ¨ā§āĻĄā§‡ āϚāϞ⧇āĨ¤

  • āĻĻāĻžā§ŸāĻŋāĻ¤ā§āĻŦ: āĻāϟāĻŋ Docker API āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰ⧇ āĻāĻŦāĻ‚ Docker āĻ…āĻŦāĻœā§‡āĻ•ā§āϟāϗ⧁āϞ⧋ (Images, Containers, Networks, Volumes) āĻŽā§āϝāĻžāύ⧇āϜ āĻ•āϰ⧇āĨ¤
  • āĻ•āĻŽāĻŋāωāύāĻŋāϕ⧇āĻļāύ: āĻāϟāĻŋ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻĄā§‡āĻŽāύ āĻŦāĻž āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡āϰ āϏāĻžāĻĨ⧇ āϝ⧋āĻ—āĻžāϝ⧋āĻ— āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

ā§Š. Docker Registry

āĻāϟāĻŋ Docker āχāĻŽā§‡āϜāϗ⧁āϞ⧋āϰ āĻ¸ā§āĻŸā§‹āϰ⧇āϜ āĻŦāĻž āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāĨ¤

  • Docker Hub: āĻāϟāĻŋ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻĒāĻžāĻŦāϞāĻŋāĻ• āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋ āϝ⧇āĻ–āĻžāύ⧇ āĻ…āĻĢāĻŋāĻļāĻŋāϝāĻŧāĻžāϞ āχāĻŽā§‡āϜāϗ⧁āϞ⧋ āĻĨāĻžāϕ⧇āĨ¤
  • Private Registry: āĻāĻ¨ā§āϟāĻžāϰāĻĒā§āϰāĻžāχāϜ āϞ⧇āϭ⧇āϞ⧇ āϏāĻŋāĻ•āĻŋāωāϰāĻĄ āχāĻŽā§‡āϜ āϰāĻžāĻ–āĻžāϰ āϜāĻ¨ā§āϝ āύāĻŋāϜāĻ¸ā§āĻŦ āĻĒā§āϰāĻžāχāϭ⧇āϟ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤
  • āĻ•āĻžāϜ: āϝāĻ–āύ docker pull āĻŦāĻž docker run āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϝāĻŧ, āϤāĻ–āύ āĻĄā§‡āĻŽāύ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āχāĻŽā§‡āϜāϟāĻŋ āĻāĻ–āĻžāύ āĻĨ⧇āϕ⧇āχ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰ⧇āĨ¤

Docker āφāĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āϚāĻžāϰ Diagram

+--------------------+ | Docker Client | | (Command Line Tool) | +--------------------+ | | Sends Commands (e.g., run, build) | +---------------------+ | Docker Daemon |<---| Runs and Manages Containers | | (Server, Docker API)| +-----------------------------+ +---------------------+ | | Pulls/Pushes Images | +-----------------------+ | Docker Registry (Hub) | | (Docker Hub, Private) | +-----------------------+

2. Docker Lifecycle

Docker āϞāĻžāχāĻĢāϏāĻžāχāϕ⧇āϞ āĻŦāϞāϤ⧇ āĻāĻ•āϟāĻŋ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āϤ⧈āϰāĻŋ āĻĨ⧇āϕ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧇ āϏ⧇āϟāĻŋ āĻ§ā§āĻŦāĻ‚āϏ (Destroy) āĻšāĻ“ā§ŸāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻĒ⧁āϰ⧋ āĻĒāϰāĻŋāĻ•ā§āϰāĻŽāĻžāϕ⧇ āĻŦā§‹āĻāĻžāϝāĻŧāĨ¤ āĻāϕ⧇ āϏāĻžāϧāĻžāϰāĻŖāϤ “Build, Ship, and Run” āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻĢā§āϞ⧋ āĻŦāϞāĻž āĻšāϝāĻŧāĨ¤

āϞāĻžāχāĻĢāϏāĻžāχāϕ⧇āϞ⧇āϰ āϧāĻžāĻĒāϏāĻŽā§‚āĻš (Phases)

  1. Build Phase (Image Creation):
  • Dockerfile āύāĻžāĻŽāĻ• āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āĻŸā§‡āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āϏ⧋āĻ°ā§āϏ āϕ⧋āĻĄ āĻāĻŦāĻ‚ āĻĄāĻŋāĻĒ⧇āĻ¨ā§āĻĄā§‡āĻ¨ā§āϏāĻŋāϗ⧁āϞ⧋āϕ⧇ āĻāĻ•āϟāĻŋ read-only āĻŸā§‡āĻŽāĻĒā§āϞ⧇āϟ āĻŦāĻž Image-āĻ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤
  1. Ship/Distribution Phase (Push/Pull):
  • āϤ⧈āϰāĻŋāĻ•ā§ƒāϤ āχāĻŽā§‡āϜāϟāĻŋ docker push āĻ•āĻŽāĻžāĻ¨ā§āĻĄā§‡āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋāϤ⧇ āφāĻĒāϞ⧋āĻĄ āĻ•āϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ‚ docker pull-āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻ…āĻ¨ā§āϝ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āύāĻžāĻŽāĻžāύ⧋ āĻšāϝāĻŧāĨ¤
  1. Run Phase (Containerization):
  • āχāĻŽā§‡āϜ āĻĨ⧇āϕ⧇ āĻāĻ•āϟāĻŋ Container (Run-time Instance) āϚāĻžāϞ⧁ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āφāχāϏ⧋āϞ⧇āĻŸā§‡āĻĄ āĻāύāĻ­āĻžāϝāĻŧāϰāύāĻŽā§‡āĻ¨ā§āϟ āϝ⧇āĻ–āĻžāύ⧇ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϟāĻŋ āϰāĻžāύ āĻ•āϰ⧇āĨ¤
  1. Management Phase:
  • āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻ…āύ⧁āϝāĻžāϝāĻŧā§€ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰāϕ⧇ Stop, Restart, āĻŦāĻž Pause āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āϞāĻ— āĻŽāύāĻŋāϟāϰāĻŋāĻ‚ āĻāĻŦāĻ‚ āϰāĻŋāϏ⧋āĻ°ā§āϏ āĻŽā§āϝāĻžāύ⧇āϜāĻŽā§‡āĻ¨ā§āϟ āĻāχ āϧāĻžāĻĒ⧇āϰ āĻ…āĻ‚āĻļāĨ¤
  1. Destruction Phase:
  • āϝāĻ–āύ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰāϟāĻŋāϰ āφāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻĨāĻžāϕ⧇ āύāĻž, āϤāĻ–āύ docker rm āĻ•āĻŽāĻžāĻ¨ā§āĻĄā§‡āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻāϟāĻŋ āĻāĻŦāĻ‚ āĻāϰ āϏāĻžāĻĨ⧇ āϝ⧁āĻ•ā§āϤ āϰāĻŋāϏ⧋āĻ°ā§āϏ āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž āĻšāϝāĻŧāĨ¤

Docker LifeCycle Diagram

+-----------------+ | Image Creation | <-- Dockerfile +-----------------+ | v +------------------+ <-- Pull Image | Image Download | | (from Registry) | +------------------+ | v +-----------------+ <-- Run Container | Container Run | | (Instance of | | the Image) | +-----------------+ | v +------------------+ <-- Manage Container | Container Stop/ | | Remove | +------------------+

Lifecycle Summary Table

āϧāĻžāĻĒ (Stage)āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āωāĻĻāĻžāĻšāϰāĻŖāĻŦāĻ°ā§āĻŖāύāĻž
Builddocker buildDockerfile āĻĨ⧇āϕ⧇ āĻāĻ•āϟāĻŋ āĻĒā§‹āĻ°ā§āĻŸā§‡āĻŦāϞ āχāĻŽā§‡āϜ āϤ⧈āϰāĻŋ āĻ•āϰāĻžāĨ¤
Pulldocker pullāϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋ āĻĨ⧇āϕ⧇ āχāĻŽā§‡āϜ āϞ⧋āĻ•āĻžāϞ āĻŽā§‡āĻļāĻŋāύ⧇ āύāĻŋā§Ÿā§‡ āφāϏāĻžāĨ¤
Rundocker runāχāĻŽā§‡āĻœā§‡āϰ āĻ“āĻĒāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ āĻāĻ•āϟāĻŋ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āĻĒā§āϰāϏ⧇āϏ āϚāĻžāϞ⧁ āĻ•āϰāĻžāĨ¤
Stopdocker stopāϚāϞāĻŽāĻžāύ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰāϕ⧇ āĻ—ā§āϰ⧇āϏāĻĢ⧁āϞāĻŋ āĻŦāĻ¨ā§āϧ āĻ•āϰāĻžāĨ¤
Destroydocker rmāĻŦāĻ¨ā§āϧ āĻĨāĻžāĻ•āĻž āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āĻāĻŦāĻ‚ āϤāĻžāϰ āĻŸā§‡āĻŽā§āĻĒā§‹āϰāĻžāϰāĻŋ āĻĄā§‡āϟāĻž āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻžāĨ¤