Docker Introduction đ â
āϏāĻĢāĻāĻā§ā§āϝāĻžāϰ āĻĄā§āĻā§āϞāĻĒāĻŽā§āύā§āĻā§āϰ āĻāĻāϤ⧠Docker āĻāĻāĻāĻŋ āĻŦāĻŋāĻĒā§āϞāĻŦā§ āύāĻžāĻŽāĨ¤ āĻāĻāĻŋ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āϞāĻā§āĻ āĻāϰāĻžāϰ āĻĒā§āϰāϏā§āϏāĻā§ āĻāĻŽā§āϞ āĻŦāĻĻāϞ⧠āĻĻāĻŋā§ā§āĻā§āĨ¤ āĻāĻ āĻāĻžāĻāĻĄā§ āĻāĻŽāϰāĻž āĻĄāĻāĻžāϰā§āϰ āĻāĻā§āϰ⧠āĻĒā§āϰāĻŦā§āĻļ āĻāϰāĻŦā§āĨ¤
ā§§. Docker āĻā§? (What is Docker?) â
Docker āĻšāϞ⧠āĻāĻāĻāĻŋ āĻāĻĒā§āύ-āϏā§āϰā§āϏ āĻĒā§āϞā§āϝāĻžāĻāĻĢāϰā§āĻŽ āϝāĻž āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύāĻā§āϞā§āĻā§ āĻāύā§āĻā§āĻāύāĻžāϰā§āϰ āĻŽāϧā§āϝ⧠āϤā§āϰāĻŋ (Build), āĻļāĻŋāĻĒ (Ship) āĻāĻŦāĻ āϰāĻžāύ (Run) āĻāϰāϤ⧠āϏāĻšāĻžā§āϤāĻž āĻāϰā§āĨ¤ āĻāĻāĻŋ āĻĄā§āĻā§āϞāĻĒāĻŽā§āύā§āĻ āĻāύāĻāĻžā§āϰāύāĻŽā§āύā§āĻ āĻāĻŦāĻ āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύ āĻāύāĻāĻžā§āϰāύāĻŽā§āύā§āĻā§āϰ āĻŽāϧā§āϝāĻāĻžāϰ āĻŦā§āϝāĻŦāϧāĻžāύ āĻāĻŽāĻŋā§ā§ āĻāύā§āĨ¤
āϏāĻšāĻ āĻāĻžāώāĻžā§, āĻĄāĻāĻžāϰ āĻšāϞ⧠āĻāĻŽāύ āĻāĻāĻāĻŋ āĻā§āϞ āϝāĻž āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒ āĻāĻŦāĻ āϤāĻžāϰ āĻĒā§āϰā§ā§āĻāύā§ā§ āϏāĻŦ āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋāĻā§ āĻāĻāĻāĻŋ āĻŦāĻžāĻā§āϏ⧠(Container) āĻāϰ⧠āĻĻā§ā§, āϝāĻžāϤ⧠āϏā§āĻāĻŋ āϝā§āĻā§āύ⧠āĻāĻŽā§āĻĒāĻŋāĻāĻāĻžāϰ⧠āĻāĻāĻāĻāĻžāĻŦā§ āĻāϞā§āĨ¤
⧍. Docker āĻāϰ āĻāϤāĻŋāĻšāĻžāϏ (History of Docker) â
- ⧍ā§Ļā§§ā§Ļ: Solomon Hykes āĻāĻŦāĻ āϤāĻžāϰ āĻāĻŋāĻŽ āĻĢā§āϰāĻžāύā§āϏ⧠dotCloud āύāĻžāĻŽā§ āĻāĻāĻāĻŋ PaaS (Platform as a Service) āĻā§āĻŽā§āĻĒāĻžāύāĻŋ āĻļā§āϰ⧠āĻāϰā§āύāĨ¤
- ⧍ā§Ļā§§ā§Š: dotCloud āϤāĻžāĻĻā§āϰ āĻāύā§āĻāĻžāϰāύāĻžāϞ āĻĒā§āϰāĻā§āĻā§āĻ āĻšāĻŋāϏā§āĻŦā§ āϤā§āϰāĻŋ āĻāϰāĻž 'Docker' āĻā§ āĻāĻĒā§āύ-āϏā§āϰā§āϏ āĻšāĻŋāϏā§āĻŦā§ āĻĒā§āϰāĻāĻžāĻļ āĻāϰā§āĨ¤
- ⧍ā§Ļā§§ā§Ē: Docker ā§§.ā§Ļ āĻāĻžāϰā§āϏāύ āϰāĻŋāϞāĻŋāĻ āĻšā§ āĻāĻŦāĻ āĻāĻāĻŋ āĻ āĻŦāĻŋāĻļā§āĻŦāĻžāϏā§āϝ āĻĻā§āϰā§āϤāĻāϤāĻŋāϤ⧠āĻāύāĻĒā§āϰāĻŋā§āϤāĻž āĻĒā§āϤ⧠āĻļā§āϰ⧠āĻāϰā§āĨ¤
- āĻŦāϰā§āϤāĻŽāĻžāύ: āĻāĻ āĻĄāĻāĻžāϰ āĻāύā§āĻā§āĻāύāĻžāϰāĻžāĻāĻā§āĻļāύā§āϰ āĻāύā§āϝ āĻāύā§āĻĄāĻžāϏā§āĻā§āϰāĻŋāϰ āϏā§āĻā§āϝāĻžāύā§āĻĄāĻžāϰā§āĻĄ āĻšā§ā§ āĻĻāĻžāĻā§āĻŋā§ā§āĻā§āĨ¤
ā§Š. Docker Architecture Overview â
Docker āĻāĻāĻāĻŋ Client-Server āĻāϰā§āĻāĻŋāĻā§āĻāĻāĻžāϰ āĻ āύā§āϏāϰāĻŖ āĻāϰā§āĨ¤ āĻāϰ āĻĒā§āϰāϧāĻžāύ āϤāĻŋāύāĻāĻŋ āĻ āĻāĻļ āĻšāϞā§:
- Docker Client: āĻāĻāĻŋ āĻšāϞ⧠āϏā§āĻ āĻŽāĻžāϧā§āϝāĻŽ (CLI), āϝāĻžāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻŽāϰāĻž āĻĄāĻāĻžāϰāĻā§ āĻāĻŽāĻžāύā§āĻĄ āĻĻāĻŋāĻ (āϝā§āĻŽāύ:
docker run)āĨ¤ - Docker Daemon (Host): āĻāĻāĻŋ āĻŦā§āϝāĻžāĻāĻā§āϰāĻžāĻāύā§āĻĄā§ āĻāϞ⧠āĻāĻŦāĻ āĻāύā§āĻā§āĻāύāĻžāϰ āϤā§āϰāĻŋ, āϰāĻžāύ āĻāĻŦāĻ āĻŽā§āϝāĻžāύā§āĻ āĻāϰāĻžāϰ āĻāϏāϞ āĻāĻžāĻāĻā§āϞ⧠āĻāϰā§āĨ¤
- Docker Registry: āĻāĻāĻŋ āĻšāϞ⧠āĻāĻāĻāĻŋ āϏā§āĻā§āϰā§āĻ āϝā§āĻāĻžāύ⧠āĻĄāĻāĻžāϰ āĻāĻŽā§āĻāĻā§āϞ⧠āϰāĻžāĻāĻž āĻšā§ (āϝā§āĻŽāύ: Docker Hub)āĨ¤
ā§Ē. Docker Ecosystem â
āĻĄāĻāĻžāϰ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻāĻāĻāĻŋ āĻā§āϞ āύā§, āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻŦāĻŋāĻļāĻžāϞ āĻāĻā§āϏāĻŋāϏā§āĻā§āĻŽāĨ¤ āĻāϰ āĻĒā§āϰāϧāĻžāύ āĻāĻĒāĻžāĻĻāĻžāύāĻā§āϞ⧠āĻšāϞā§:
- Docker Engine: āĻŽā§āϞ āĻāύā§āĻā§āĻāύāĻžāϰāĻžāĻāĻā§āĻļāύ āĻā§āĻāύā§āϞāĻāĻŋāĨ¤
- Docker Hub: āĻāĻŽā§āĻ āĻļā§ā§āĻžāϰ āĻāĻŦāĻ āĻŽā§āϝāĻžāύā§āĻ āĻāϰāĻžāϰ āĻā§āϞāĻžāĻāĻĄ āĻĒā§āϞā§āϏāĨ¤
- Docker Compose: āĻŽāĻžāϞā§āĻāĻŋ-āĻāύā§āĻā§āĻāύāĻžāϰ āĻ ā§āϝāĻžāĻĒ āĻāĻžāϞāĻžāύā§āϰ āĻā§āϞāĨ¤
- Docker Swarm: āĻĄāĻāĻžāϰā§āϰ āύāĻŋāĻāϏā§āĻŦ āĻ āϰā§āĻā§āϏā§āĻā§āϰā§āĻļāύ āĻā§āϞāĨ¤
- Docker Desktop: āĻāĻāύā§āĻĄā§āĻ āĻŦāĻž āĻŽā§āϝāĻžāĻā§āϰ āĻāύā§āϝ āϏāĻšāĻ āĻāύā§āĻāĻžāϰāĻĢā§āϏāĨ¤
ā§Ģ. Docker Editions â
āĻĄāĻāĻžāϰ āĻŽā§āϞāϤ āĻĻā§āĻāĻŋ āĻāĻžāϰā§āϏāύ⧠āĻĒāĻžāĻā§āĻž āϝāĻžā§:
- Docker Community Edition (CE): āĻāĻāĻŋ āĻĢā§āϰāĻŋ āĻāĻŦāĻ āĻĄā§āĻā§āϞāĻĒāĻžāϰ āĻŦāĻž āĻā§āĻ āĻāĻŋāĻŽā§āϰ āĻāύā§āϝ āĻāĻāĻĻāĻŽ āĻāĻĒāϝā§āĻā§āϤāĨ¤
- Docker Enterprise (EE): āĻāĻāĻŋ āĻŦā§ āĻā§āĻŽā§āĻĒāĻžāύāĻŋāĻā§āϞā§āϰ āĻāύā§āϝ āϤā§āϰāĻŋ, āϝā§āĻāĻžāύ⧠āϏāĻŋāĻāĻŋāĻāϰāĻŋāĻāĻŋ āĻāĻŦāĻ āϏāĻžāĻĒā§āϰā§āĻāĻā§ āĻŦā§āĻļāĻŋ āĻā§āϰā§āϤā§āĻŦ āĻĻā§āĻā§āĻž āĻšā§ (āĻŦāϰā§āϤāĻŽāĻžāύ⧠āĻāĻāĻŋ Mirantis āĻĻā§āĻŦāĻžāϰāĻž āĻĒāϰāĻŋāĻāĻžāϞāĻŋāϤ)āĨ¤
ā§Ŧ. Docker āĻā§āύ āĻāϤ āĻāύāĻĒā§āϰāĻŋā§? (Why Docker is popular?) â
- Speed: āĻāĻžāϰā§āĻā§āϝāĻŧāĻžāϞ āĻŽā§āĻļāĻŋāύā§āϰ āϤā§āϞāύāĻžāϝāĻŧ āĻĄāĻāĻžāϰ āĻāύā§āĻā§āĻāύāĻžāϰ āĻ āύā§āĻ āĻĻā§āϰā§āϤ āϏā§āĻāĻžāϰā§āĻ āĻšā§āĨ¤
- Standardization: āĻāĻāĻŋ āĻ ā§āϝāĻžāĻĒ āĻĄā§āĻā§āϞāĻĒāĻŽā§āύā§āĻā§āϰ āĻāĻāĻāĻŋ āϏā§āĻā§āϝāĻžāύā§āĻĄāĻžāϰā§āĻĄ āĻĢāϰāĻŽā§āϝāĻžāĻ āϤā§āϰāĻŋ āĻāϰā§āĨ¤
- Version Control for Infrastructure: āĻāĻŽā§āĻā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻĒāύāĻŋ āĻāύāĻĢā§āϰāĻžāϏā§āĻā§āϰāĻžāĻāĻāĻžāϰā§āϰ āĻāĻžāϰā§āϏāύ āĻāύā§āĻā§āϰā§āϞ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
- Cost Effective: āĻāĻŽ āĻšāĻžāϰā§āĻĄāĻā§ā§āϝāĻžāϰ⧠āĻ āύā§āĻ āĻŦā§āĻļāĻŋ āĻ ā§āϝāĻžāĻĒ āĻāĻžāϞāĻžāύ⧠āϝāĻžā§āĨ¤
ā§. Docker Alternatives (āĻŦāĻŋāĻāϞā§āĻĒāϏāĻŽā§āĻš) â
āĻĄāĻāĻžāϰ āϏā§āϰāĻž āĻšāϞā§āĻ āĻāϰ āĻāĻŋāĻā§ āĻŦāĻŋāĻāϞā§āĻĒ āĻāĻā§ āϝāĻž āĻŦāϰā§āϤāĻŽāĻžāύ āĻŽāĻžāϰā§āĻā§āĻā§ āĻŦā§āϝāĻŦāĻšā§āϤ āĻšā§:
- Podman: āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻĄā§āĻŽā§āύ-āϞā§āϏ āĻāύā§āĻā§āĻāύāĻžāϰ āĻāĻā§āĻāĻŋāύ (RedHat-āĻāϰ āϤā§āϰāĻŋ)āĨ¤
- LXC (Linux Containers): āĻāĻāĻŋ āĻāϰāĻ āϞā§-āϞā§āĻā§āϞ āĻāύā§āĻā§āĻāύāĻžāϰ āĻā§āĻāύā§āϞāĻāĻŋāĨ¤
- containerd / runc: āĻāĻā§āϞ⧠āĻĄāĻāĻžāϰā§āϰ āĻā§āϤāϰā§āϰ āĻāĻŽā§āĻĒā§āύā§āύā§āĻ āϝāĻž āĻāĻāύ āĻāϞāĻžāĻĻāĻžāĻāĻžāĻŦā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšā§ (āĻŦāĻŋāĻļā§āώ āĻāϰ⧠Kubernetes-āĻ)āĨ¤
ā§Ž. Industry Adoption â
āĻŦāϰā§āϤāĻŽāĻžāύ⧠āĻā§āĻ āϏā§āĻāĻžāϰā§āĻāĻāĻĒ āĻĨā§āĻā§ āĻļā§āϰ⧠āĻāϰ⧠Google, Amazon, āĻāĻŦāĻ Netflix āĻāϰ āĻŽāϤ⧠āĻāĻžā§āĻžāύā§āĻ āĻā§āĻŽā§āĻĒāĻžāύāĻŋāĻā§āϞ⧠āĻĄāĻāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻā§āĨ¤ ⧝ā§Ļ% āĻāϰ āĻŦā§āĻļāĻŋ āĻāϧā§āύāĻŋāĻ āĻā§āϞāĻžāĻāĻĄ āĻāϰā§āĻāĻŋāĻā§āĻāĻāĻžāϰ āĻāĻŦāĻ CI/CD āĻĒāĻžāĻāĻĒāϞāĻžāĻāύ āĻāĻāύ āĻĄāĻāĻžāϰā§āϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āϤā§āϰāĻŋāĨ¤