Skip to content

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 āĻĻā§āĻŦāĻžāϰāĻž āĻĒāϰāĻŋāϚāĻžāϞāĻŋāϤ)āĨ¤

  • 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 āĻĒāĻžāχāĻĒāϞāĻžāχāύ āĻāĻ–āύ āĻĄāĻ•āĻžāϰ⧇āϰ āĻ“āĻĒāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ āϤ⧈āϰāĻŋāĨ¤

Released under the MIT License.