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)
- Build Phase (Image Creation):
DockerfileāύāĻžāĻŽāĻ āϏā§āĻā§āϰāĻŋāĻĒā§āĻā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϏā§āϰā§āϏ āĻā§āĻĄ āĻāĻŦāĻ āĻĄāĻŋāĻĒā§āύā§āĻĄā§āύā§āϏāĻŋāĻā§āϞā§āĻā§ āĻāĻāĻāĻŋ read-only āĻā§āĻŽāĻĒā§āϞā§āĻ āĻŦāĻž Image-āĻ āϰā§āĻĒāĻžāύā§āϤāϰ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
- Ship/Distribution Phase (Push/Pull):
- āϤā§āϰāĻŋāĻā§āϤ āĻāĻŽā§āĻāĻāĻŋ
docker pushāĻāĻŽāĻžāύā§āĻĄā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϰā§āĻāĻŋāϏā§āĻā§āϰāĻŋāϤ⧠āĻāĻĒāϞā§āĻĄ āĻāϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻdocker pull-āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻ āύā§āϝ āϏāĻžāϰā§āĻāĻžāϰ⧠āύāĻžāĻŽāĻžāύ⧠āĻšāϝāĻŧāĨ¤
- Run Phase (Containerization):
- āĻāĻŽā§āĻ āĻĨā§āĻā§ āĻāĻāĻāĻŋ Container (Run-time Instance) āĻāĻžāϞ⧠āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻāϏā§āϞā§āĻā§āĻĄ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ āϝā§āĻāĻžāύ⧠āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύāĻāĻŋ āϰāĻžāύ āĻāϰā§āĨ¤
- Management Phase:
- āĻĒā§āϰāϝāĻŧā§āĻāύ āĻ
āύā§āϝāĻžāϝāĻŧā§ āĻāύā§āĻā§āĻāύāĻžāϰāĻā§
Stop,Restart, āĻŦāĻžPauseāĻāϰāĻž āĻšāϝāĻŧāĨ¤ āϞāĻ āĻŽāύāĻŋāĻāϰāĻŋāĻ āĻāĻŦāĻ āϰāĻŋāϏā§āϰā§āϏ āĻŽā§āϝāĻžāύā§āĻāĻŽā§āύā§āĻ āĻāĻ āϧāĻžāĻĒā§āϰ āĻ āĻāĻļāĨ¤
- 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) | āĻāĻŽāĻžāύā§āĻĄ āĻāĻĻāĻžāĻšāϰāĻŖ | āĻŦāϰā§āĻŖāύāĻž |
|---|---|---|
| Build | docker build | Dockerfile āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻĒā§āϰā§āĻā§āĻŦāϞ āĻāĻŽā§āĻ āϤā§āϰāĻŋ āĻāϰāĻžāĨ¤ |
| Pull | docker pull | āϰā§āĻāĻŋāϏā§āĻā§āϰāĻŋ āĻĨā§āĻā§ āĻāĻŽā§āĻ āϞā§āĻāĻžāϞ āĻŽā§āĻļāĻŋāύ⧠āύāĻŋā§ā§ āĻāϏāĻžāĨ¤ |
| Run | docker run | āĻāĻŽā§āĻā§āϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āĻāĻāĻāĻŋ āĻāύā§āĻā§āĻāύāĻžāϰ āĻĒā§āϰāϏā§āϏ āĻāĻžāϞ⧠āĻāϰāĻžāĨ¤ |
| Stop | docker stop | āĻāϞāĻŽāĻžāύ āĻāύā§āĻā§āĻāύāĻžāϰāĻā§ āĻā§āϰā§āϏāĻĢā§āϞāĻŋ āĻŦāύā§āϧ āĻāϰāĻžāĨ¤ |
| Destroy | docker rm | āĻŦāύā§āϧ āĻĨāĻžāĻāĻž āĻāύā§āĻā§āĻāύāĻžāϰ āĻāĻŦāĻ āϤāĻžāϰ āĻā§āĻŽā§āĻĒā§āϰāĻžāϰāĻŋ āĻĄā§āĻāĻž āĻŽā§āĻā§ āĻĢā§āϞāĻžāĨ¤ |