Working with Docker Images đŧī¸ â
Docker Image āĻšāϞ⧠āĻāύā§āĻā§āĻāύāĻžāϰ āϤā§āϰāĻŋ āĻāϰāĻžāϰ āĻŽā§āϞ āĻŦā§āϞā§-āĻĒā§āϰāĻŋāύā§āĻ āĻŦāĻž āĻā§āĻŽāĻĒā§āϞā§āĻāĨ¤ āĻāĻāĻŋ āĻāĻāĻāĻŋ āϰāĻŋāĻĄ-āĻ āύāϞāĻŋ (Read-only) āĻĢāĻžāĻāϞ āϝāĻžāϤ⧠āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻāĻžāϞāĻžāύā§āϰ āĻāύā§āϝ āĻĒā§āϰā§ā§āĻāύā§ā§ āϏāĻŦ āĻā§āĻĄ, āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ, āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻāĻŦāĻ āĻāύāĻāĻžā§āϰāύāĻŽā§āύā§āĻ āĻĨāĻžāĻā§āĨ¤
ā§§. Docker Image āĻā§? (What is an Image?) â
āϏāĻšāĻ āĻāĻĨāĻžā§, āĻāĻŽā§āĻ āĻšāϞ⧠āĻāĻāĻāĻŋ āĻšāĻŋāĻŽāĻžāϝāĻŧāĻŋāϤ (Frozen) āĻŽā§āĻšā§āϰā§āϤā§āϰ āĻāύāĻāĻžā§āϰāύāĻŽā§āύā§āĻāĨ¤ āϝā§āĻŽāύ āĻāĻāĻāĻŋ āĻā§āĻŽ āĻāύā§āϏāĻāϞ āĻāϰāĻžāϰ āĻāύā§āϝ āϝā§āĻŽāύ āĻāĻāĻāĻŋ ISO āĻŦāĻž āĻāύā§āϏāĻāϞāĻžāϰ āĻĢāĻžāĻāϞ āϞāĻžāĻā§, āϤā§āĻŽāύāĻŋ āĻāĻāĻāĻŋ āĻāύā§āĻā§āĻāύāĻžāϰ āϰāĻžāύ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻĄāĻāĻžāϰ āĻāĻŽā§āĻ āϞāĻžāĻā§āĨ¤ āĻāύā§āĻā§āĻāύāĻžāϰ āĻšāϞ⧠āĻāĻŽā§āĻā§āϰ āĻāĻāĻāĻŋ āϰāĻžāύāĻŋāĻ āĻāĻžāϰā§āϏāύāĨ¤
⧍. Image Layers (āϞā§āϝāĻŧāĻžāϰ āϏāĻŋāϏā§āĻā§āĻŽ) â
āĻĄāĻāĻžāϰ āĻāĻŽā§āĻāĻā§āϞ⧠āĻāĻāĻžāϧāĻŋāĻ āϞā§āϝāĻŧāĻžāϰā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϤā§āϰāĻŋ āĻšā§āĨ¤ āĻāĻĒāύāĻŋ āϝāĻāύ āĻā§āύ⧠Dockerfile āĻŦāĻŋāϞā§āĻĄ āĻāϰā§āύ, āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāĻŽāĻžāύā§āĻĄ āĻāĻāĻāĻŋ āύāϤā§āύ āϞā§āϝāĻŧāĻžāϰ āϤā§āϰāĻŋ āĻāϰā§āĨ¤
- Layer Caching: āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻĢāĻžāĻāϞ⧠āĻā§āύ⧠āĻā§āĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰā§āύ, āĻĄāĻāĻžāϰ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āϏā§āĻ āϞā§āϝāĻŧāĻžāϰāĻāĻŋ āĻĒā§āύāϰāĻžā§ āĻŦāĻŋāϞā§āĻĄ āĻāϰā§āĨ¤ āĻŦāĻžāĻāĻŋāĻā§āϞ⧠āĻā§āϝāĻžāĻļ (Cache) āĻĨā§āĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§, āϝāĻž āĻŦāĻŋāϞā§āĻĄ āĻĒā§āϰāϏā§āϏāĻā§ āĻ āύā§āĻ āĻĻā§āϰā§āϤ āĻāϰā§āĨ¤
- Shared Layers: āϝāĻĻāĻŋ āĻĻā§āĻāĻŋ āĻāĻŽā§āĻā§āϰ āĻŦā§āϏ āϞā§āϝāĻŧāĻžāϰ (āϝā§āĻŽāύ: Ubuntu) āĻāĻ āĻšā§, āϤāĻŦā§ āϤāĻžāϰāĻž āϏā§āĻ āϞā§āϝāĻŧāĻžāϰāĻāĻŋ āĻļā§ā§āĻžāϰ āĻāϰ⧠āϏā§āĻā§āϰā§āĻ āϏāĻžāĻļā§āϰ⧠āĻāϰā§āĨ¤
ā§Š. Base Images (āĻāĻŋāϤā§āϤāĻŋ āĻāĻŽā§āĻ) â
āϝā§āĻā§āύ⧠āĻāĻŽā§āĻ āϤā§āϰāĻŋ āĻāϰāĻžāϰ āϏāĻŽā§ āĻāĻŽāϰāĻž āĻāĻāĻāĻŋ Base Image āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŋāĨ¤ āĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻāĻāĻāĻŋ āĻ āĻĒāĻžāϰā§āĻāĻŋāĻ āϏāĻŋāϏā§āĻā§āĻŽ (āϝā§āĻŽāύ: āĻāĻŦā§āύā§āĻā§, āĻāϞāĻĒāĻžāĻāύ) āĻŦāĻž āĻā§āύ⧠āϞā§āϝāĻžāĻā§āĻā§ā§ā§āĻ āϰāĻžāύāĻāĻžāĻāĻŽ (āϝā§āĻŽāύ: āĻĒāĻžāĻāĻĨāύ, āύā§āĻĄ) āĻšā§ā§ āĻĨāĻžāĻā§āĨ¤
āĻāĻĻāĻžāĻšāϰāĻŖ: FROM python:3.9 āĻāĻāĻžāύ⧠python:3.9 āĻšāϞ⧠āĻāĻĒāύāĻžāϰ āĻ
ā§āϝāĻžāĻĒā§āϰ āĻŦā§āϏ āĻāĻŽā§āĻāĨ¤
ā§Ē. Image naming convention & Tags â
āĻĄāĻāĻžāϰ āĻāĻŽā§āĻā§āϰ āύāĻžāĻŽ āϏāĻžāϧāĻžāϰāĻŖāϤ āϤāĻŋāύāĻāĻŋ āĻ āĻāĻļā§ āĻŦāĻŋāĻāĻā§āϤ āĻĨāĻžāĻā§:
[Registry]/[User/Org]/[Image Name]:[Tag]- Registry: āĻā§āĻĨāĻžā§ āϰāĻžāĻāĻž āĻšā§ā§āĻā§ (āϝā§āĻŽāύ:
docker.io- āĻĄāĻāĻžāϰ āĻšāĻžāĻŦ)āĨ¤ - User/Org: āĻāĻžāϰ āĻāĻŽā§āĻ (āϝā§āĻŽāύ:
riponahmed2201)āĨ¤ - Image Name: āĻ
ā§āϝāĻžāĻĒā§āϰ āύāĻžāĻŽ (āϝā§āĻŽāύ:
my-web-app)āĨ¤ - Tag: āĻāĻžāϰā§āϏāύ āĻāĻāĻĄā§āύā§āĻāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ (āϝā§āĻŽāύ:
v1.0,latest)āĨ¤
TIP
āϝāĻĻāĻŋ āĻāĻĒāύāĻŋ āĻā§āύ⧠āĻā§āϝāĻžāĻ āύāĻž āĻĻā§āύ, āĻĄāĻāĻžāϰ āĻ
āĻā§āĻŽā§āĻāĻŋāĻ latest āĻā§āϝāĻžāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĨ¤ āϤāĻŦā§ āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύ⧠āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāĻžāϰā§āϏāύ āĻā§āϝāĻžāĻ (āϝā§āĻŽāύ: 1.2.3) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻāĻžāϞā§āĨ¤
ā§Ģ. Official vs User Images â
- Official Images: āĻāĻā§āϞ⧠āĻĄāĻāĻžāϰ āĻāĻŋāĻŽā§āϰ āĻĻā§āĻŦāĻžāϰāĻž āĻā§āϰāĻŋāĻĢāĻžāĻāĻĄ āĻāĻŦāĻ āĻŽā§āĻāύāĻā§āĻāύ āĻāϰāĻž āĻšā§ (āϝā§āĻŽāύ:
nginx,python,mongo)āĨ¤ āĻāĻā§āϞā§āϰ āύāĻžāĻŽā§āϰ āĻāĻā§ āĻā§āύ⧠āĻāĻāĻāĻžāϰāύā§āĻŽ āĻĨāĻžāĻā§ āύāĻžāĨ¤ - User Images: āĻāĻā§āϞ⧠āϏāĻžāϧāĻžāϰāĻŖ āĻāĻāĻāĻžāϰ āĻŦāĻž āĻā§āĻŽā§āĻĒāĻžāύāĻŋāĻā§āϞā§āϰ āϤā§āϰāĻŋ (āϝā§āĻŽāύ:
jitesoft/node)āĨ¤ āĻāĻā§āϞā§āϰ āύāĻžāĻŽā§āϰ āĻļā§āϰā§āϤ⧠āĻ āĻŦāĻļā§āϝāĻ āĻāĻāĻāĻžāϰāύā§āĻŽ āĻŦāĻž āĻ āϰā§āĻāĻžāύāĻžāĻāĻā§āĻļāύ āύā§āĻŽ āĻĨāĻžāĻā§āĨ¤
ā§Ŧ. Image ID vs Image Name â
- Image Name: āĻāĻāĻŋ āĻŽāĻžāύā§āώā§āϰ āĻĒā§āĻžāϰ āĻāύā§āϝ (āϝā§āĻŽāύ:
ubuntu:20.04)āĨ¤ āĻāĻāĻŋ āĻāĻāύāĻŋāĻ āύāĻž-āĻ āĻšāϤ⧠āĻĒāĻžāϰ⧠(āĻā§āϝāĻžāĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāύāϝā§āĻā§āϝ)āĨ¤ - Image ID: āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻāύāĻŋāĻ SHA⧍ā§Ģā§Ŧ āĻšāĻžāĻļ (Hash)āĨ¤ āĻāĻāĻŋ āĻāĻŽā§āĻā§āϰ āĻāύā§āĻā§āύā§āĻā§āϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āϤā§āϰāĻŋ āĻšā§āĨ¤ āĻāĻŽā§āĻāĻāĻŋ āĻāĻāύāĻŋāĻāϞāĻŋ āĻāĻāĻĄā§āύā§āĻāĻŋāĻĢāĻžāĻ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻāĻĄāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšā§āĨ¤
ā§. Image Size (āĻāĻŽā§āĻ āϏāĻžāĻāĻ) â
āĻāĻŽā§āĻā§āϰ āϏāĻžāĻāĻ āĻāĻŽāĻžāύ⧠āĻā§āĻŦāĻ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻāĻžāϰāĻŖ:
- āĻĻā§āϰā§āϤ āĻĄāĻžāĻāύāϞā§āĻĄ āĻ āĻāĻĒāϞā§āĻĄ āĻšā§āĨ¤
- āϏā§āĻā§āϰā§āĻ āĻāĻŽ āϞāĻžāĻā§āĨ¤
- āϏāĻŋāĻāĻŋāĻāϰāĻŋāĻāĻŋ āĻŦā§āĻļāĻŋ āĻĨāĻžāĻā§ (āĻ āĻĒā§āϰā§ā§āĻāύā§āϝāĻŧ āĻĢāĻžāĻāϞ āĻāĻŽ āĻĨāĻžāĻā§)āĨ¤
IMPORTANT
āĻāĻŽā§āĻā§āϰ āϏāĻžāĻāĻ āĻāĻŽāĻžāύā§āϰ āĻāύā§āϝ Alpine āĻŦāĻž Distroless āĻāĻŽā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻāĻāĻāĻŋ āĻŦā§āϏā§āĻ āĻĒā§āϰā§āϝāĻžāĻāĻāĻŋāϏāĨ¤
TIP
āĻāĻŽā§āĻ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāĻžāϞā§āĻāĻžāĻŦā§ āĻāĻžāύāĻž āĻĨāĻžāĻāϞ⧠āĻāĻĒāύāĻŋ āĻāϰāĻ āĻĻāĻā§āώ āĻĄāĻāĻžāϰāĻĢāĻžāĻāϞ āϞāĻŋāĻāϤ⧠āĻĒāĻžāϰāĻŦā§āύāĨ¤