๐ŸŽฏ Mแปฅc Tiรชu Bร i Viแบฟt

Tแป•ng hแปฃp kiแบฟn thแปฉc Docker tแปซ cฦก bแบฃn ฤ‘แบฟn thแปฑc hร nh โ€” bao gแป“m vแบฅn ฤ‘แป Docker giแบฃi quyแบฟt, architecture, Dockerfile, vร  cรกch Docker nแบฑm trong quy trรฌnh DevOps / CI-CD thแปฑc tแบฟ.

Docker = ฤ‘รณng gรณi app + dependencies vร o 1 container chแบกy giแป‘ng nhau MแปŒI Nฦ I. Khรดng cรฒn โ€œtrรชn mรกy tรดi chแบกy ฤ‘ฦฐแปฃc!โ€


๐Ÿค” 1. Docker Lร  Gรฌ?

Container Platform

Docker lร  nแปn tแบฃng dรนng ฤ‘แปƒ ฤ‘รณng gรณi, chแบกy, vร  deploy application. Mแปi thแปฉ app cแบงn (code, dependencies, runtime, config) ฤ‘ฦฐแปฃc gรณi vร o 1 container.

Application
+ Dependencies
+ Runtime
+ Config
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
Docker Container

โ†’ Chแบกy giแป‘ng nhau trรชn mแปi mรดi trฦฐแปng
โ†’ Dev machine = Staging = Production

๐Ÿ˜ซ 2. Vแบฅn ฤแป Trฦฐแป›c Khi Cรณ Docker

Cร i ฤแบทt Thแปง Cรดng Trรชn OS

Before Docker:

  Developer Machine
  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
  โ”‚    Operating System     โ”‚
  โ”‚                         โ”‚
  โ”‚  Node.js v18            โ”‚
  โ”‚  PostgreSQL 15          โ”‚
  โ”‚  Redis 7                โ”‚
  โ”‚  RabbitMQ               โ”‚
  โ”‚  MongoDB 6              โ”‚
  โ”‚                         โ”‚
  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

  Vแบฅn ฤ‘แป:
  โ”œโ”€ โŒ Mแป—i dev cร i version khรกc nhau
  โ”œโ”€ โŒ Windows / Mac / Linux khรกc nhau
  โ”œโ”€ โŒ Dependency conflict
  โ”‚     (App A cแบงn Node 16, App B cแบงn Node 20)
  โ”œโ”€ โŒ Setup mแบฅt hร ng giแป cho dev mแป›i
  โ””โ”€ โŒ "Trรชn mรกy tรดi chแบกy ฤ‘ฦฐแปฃc!" ๐Ÿคท

Deployment Thแปง Cรดng

Deployment truyแปn thแป‘ng:

  Developer
     โ”‚
     โ–ผ
  Application package (.jar / .zip)
  + Setup instructions (README)
     โ”‚
     โ–ผ
  Operations Team
     โ”‚
     โ”œโ”€ Install Node.js v18.x
     โ”œโ”€ Install PostgreSQL
     โ”œโ”€ Config environment variables
     โ”œโ”€ Setup firewall
     โ””โ”€ Run application
     โ”‚
     โ–ผ
  Vแบฅn ฤ‘แป:
  โ”œโ”€ โŒ Thiแบฟu bฦฐแป›c config
  โ”œโ”€ โŒ Version mismatch
  โ”œโ”€ โŒ Dev vs Ops conflict
  โ””โ”€ โŒ Mแป—i server setup khรกc nhau

โœ… 3. Docker Giแบฃi Quyแบฟt Nhฦฐ Thแบฟ Nร o

ฤรณng Gรณi Service Vร o Container

With Docker:

  Developer Machine
  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
  โ”‚       Docker Engine          โ”‚
  โ”‚                              โ”‚
  โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
  โ”‚  โ”‚Container โ”‚ โ”‚Container โ”‚  โ”‚
  โ”‚  โ”‚ Node.js  โ”‚ โ”‚PostgreSQLโ”‚  โ”‚
  โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
  โ”‚                              โ”‚
  โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
  โ”‚  โ”‚Container โ”‚ โ”‚Container โ”‚  โ”‚
  โ”‚  โ”‚  Redis   โ”‚ โ”‚ RabbitMQ โ”‚  โ”‚
  โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
  โ”‚                              โ”‚
  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

  Developer chแป‰ cแบงn:

  docker run postgres
  docker run redis
  docker run node

  โ†’ Mแปi thแปฉ chแบกy trong vร i giรขy
  โ†’ Khรดng cแบงn cร i trรชn OS
  โ†’ Mแปi dev dรนng Cร™NG version

Deployment Vแป›i Docker

Developer
    โ”‚
    โ–ผ
Build Docker Image
(code + dependencies + runtime + config)
    โ”‚
    โ–ผ
Push to Registry
    โ”‚
    โ–ผ
Server
    โ”‚
docker run image
    โ”‚
    โ–ผ
Container Running โœ…

โ†’ Ops chแป‰ cแบงn 1 lแป‡nh
โ†’ Khรดng cแบงn biแบฟt app dรนng gรฌ
โ†’ Mแปi server chแบกy GIแปNG NHAU

๐Ÿ–ฅ๏ธ 4. Virtual Machine vs Docker

Virtual Machine

Hardware
    โ”‚
    โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Hypervisor  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
  โ”Œโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”
  โ–ผ    โ–ผ    โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”โ”Œโ”€โ”€โ”€โ”€โ”โ”Œโ”€โ”€โ”€โ”€โ”
โ”‚VM 1โ”‚โ”‚VM 2โ”‚โ”‚VM 3โ”‚
โ”‚    โ”‚โ”‚    โ”‚โ”‚    โ”‚
โ”‚ OS โ”‚โ”‚ OS โ”‚โ”‚ OS โ”‚  โ† Mแป—i VM cรณ OS riรชng
โ”‚Kernโ”‚โ”‚Kernโ”‚โ”‚Kernโ”‚
โ”‚App โ”‚โ”‚App โ”‚โ”‚App โ”‚
โ””โ”€โ”€โ”€โ”€โ”˜โ””โ”€โ”€โ”€โ”€โ”˜โ””โ”€โ”€โ”€โ”€โ”˜

Size: GB
Boot: phรบt
Heavy, tแป‘n RAM

Docker Container

Hardware
    โ”‚
    โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   Host OS    โ”‚
โ”‚   Kernel     โ”‚  โ† Share 1 kernel duy nhแบฅt
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
    โ”‚
    โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚Docker Engine โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
  โ”Œโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”
  โ–ผ    โ–ผ    โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”โ”Œโ”€โ”€โ”€โ”€โ”โ”Œโ”€โ”€โ”€โ”€โ”
โ”‚ C1 โ”‚โ”‚ C2 โ”‚โ”‚ C3 โ”‚
โ”‚    โ”‚โ”‚    โ”‚โ”‚    โ”‚
โ”‚Libsโ”‚โ”‚Libsโ”‚โ”‚Libsโ”‚  โ† Chแป‰ cรณ libraries
โ”‚App โ”‚โ”‚App โ”‚โ”‚App โ”‚  โ† Khรดng cรณ OS kernel
โ””โ”€โ”€โ”€โ”€โ”˜โ””โ”€โ”€โ”€โ”€โ”˜โ””โ”€โ”€โ”€โ”€โ”˜

Size: MB
Boot: milliseconds
Lightweight, รญt tแป‘n RAM

So Sรกnh

Aspect Virtual Machine Docker Container
Size GB MB
Boot time Phรบt Milliseconds
OS Mแป—i VM cรณ OS riรชng Share kernel host
Resource Tแป‘n nhiแปu RAM/CPU Lightweight
Isolation Hoร n toร n (OS level) Process level
Use case Cแบงn OS riรชng biแป‡t Application delivery

Key insight: Docker khรดng thay thแบฟ VM. Docker cho application packaging, VM cho OS-level isolation.


๐Ÿ—๏ธ 5. Docker Architecture

3 Thร nh Phแบงn Chรญnh

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚            Docker Architecture               โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                                              โ”‚
โ”‚  1๏ธโƒฃ  Docker CLI                              โ”‚
โ”‚     Tool dรฒng lแป‡nh (docker run, build, ...)  โ”‚
โ”‚                                              โ”‚
โ”‚  2๏ธโƒฃ  Docker Engine (Daemon)                  โ”‚
โ”‚     Quแบฃn lรฝ containers, images, networking   โ”‚
โ”‚                                              โ”‚
โ”‚  3๏ธโƒฃ  Docker Registry                         โ”‚
โ”‚     Nฦกi lฦฐu trแปฏ images (Docker Hub, ECR)     โ”‚
โ”‚                                              โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
Developer
    โ”‚
    โ–ผ
Docker CLI (commands)
    โ”‚
    โ–ผ
Docker Engine (daemon)
    โ”‚
    โ”œโ”€โ”€โ–บ Manage Images
    โ”œโ”€โ”€โ–บ Manage Containers
    โ”œโ”€โ”€โ–บ Manage Networks
    โ””โ”€โ”€โ–บ Manage Volumes

๐Ÿ“ฆ 6. Docker Image vs Container

Image = Template (Blueprint)

Docker Image:
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Application     โ”‚
โ”‚  Dependencies    โ”‚
โ”‚  Runtime         โ”‚
โ”‚  Config          โ”‚
โ”‚                  โ”‚
โ”‚  READ-ONLY       โ”‚
โ”‚  Khรดng thay ฤ‘แป•i  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Vรญ dแปฅ images:
โ”œโ”€ nginx
โ”œโ”€ node
โ”œโ”€ postgres
โ”œโ”€ redis
โ””โ”€ mongodb

Container = Running Instance

Docker Image
     โ”‚
     โ”‚  docker run
     โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚    Container      โ”‚
โ”‚                   โ”‚
โ”‚  Running App      โ”‚
โ”‚  Has own state    โ”‚
โ”‚  Has own network  โ”‚
โ”‚  Has own filesystemโ”‚
โ”‚                   โ”‚
โ”‚  READ-WRITE       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Mแป™t Image โ†’ Nhiแปu Containers

        nginx image
            โ”‚
    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ–ผ       โ–ผ       โ–ผ
Container1 Container2 Container3
 (port 80)  (port 81)  (port 82)

Mแป—i container chแบกy ฤแป˜C LแบฌP
Tแปซ Cร™NG 1 image

Analogy: Image = class, Container = object instance.


๐Ÿช 7. Docker Registry & Docker Hub

Registry = Nฦกi Lฦฐu Image

Developer                          Server
    โ”‚                                โ”‚
    โ”‚  docker push                   โ”‚  docker pull
    โ–ผ                                โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚          Docker Registry             โ”‚
โ”‚                                      โ”‚
โ”‚  Docker Hub (public)                 โ”‚
โ”‚  AWS ECR (private)                   โ”‚
โ”‚  Google Artifact Registry (private)  โ”‚
โ”‚  GitHub Container Registry           โ”‚
โ”‚                                      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Docker Hub โ€” Public Registry Lแป›n Nhแบฅt

Docker Hub
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                              โ”‚
โ”‚  Repository: nginx           โ”‚
โ”‚  โ”œโ”€ nginx:1.25               โ”‚
โ”‚  โ”œโ”€ nginx:1.24               โ”‚
โ”‚  โ””โ”€ nginx:latest             โ”‚
โ”‚                              โ”‚
โ”‚  Repository: node            โ”‚
โ”‚  โ”œโ”€ node:20-alpine           โ”‚
โ”‚  โ”œโ”€ node:18-alpine           โ”‚
โ”‚  โ””โ”€ node:latest              โ”‚
โ”‚                              โ”‚
โ”‚  Repository: postgres        โ”‚
โ”‚  โ”œโ”€ postgres:16              โ”‚
โ”‚  โ”œโ”€ postgres:15              โ”‚
โ”‚  โ””โ”€ postgres:latest          โ”‚
โ”‚                              โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Image Naming Convention

registry/repository:tag

Vรญ dแปฅ:
โ”œโ”€ nginx:1.25              (Docker Hub, official)
โ”œโ”€ mycompany/webapp:v2.1   (Docker Hub, custom)
โ”œโ”€ 123456.dkr.ecr.us-east-1.amazonaws.com/myapp:latest (AWS ECR)
โ””โ”€ ghcr.io/user/app:main   (GitHub Registry)

๐Ÿ”ง 8. Docker Commands Quan Trแปng

Workflow Cฦก Bแบฃn

docker pull     โ†’ Tแบฃi image tแปซ registry
     โ”‚
     โ–ผ
docker images   โ†’ Xem danh sรกch images
     โ”‚
     โ–ผ
docker run      โ†’ Tแบกo & chแบกy container
     โ”‚
     โ–ผ
docker ps       โ†’ Xem containers ฤ‘ang chแบกy
     โ”‚
     โ–ผ
docker logs     โ†’ Xem logs container
     โ”‚
     โ–ผ
docker stop     โ†’ Dแปซng container
     โ”‚
     โ–ผ
docker start    โ†’ Chแบกy lแบกi container ฤ‘รฃ dแปซng

Cรกc Lแป‡nh Hay Dรนng

Image Commands:
โ”œโ”€ docker pull nginx:1.25      โ†’ Tแบฃi image
โ”œโ”€ docker images               โ†’ List images
โ”œโ”€ docker rmi nginx:1.25       โ†’ Xรณa image
โ””โ”€ docker build -t myapp:1.0 . โ†’ Build image tแปซ Dockerfile

Container Commands:
โ”œโ”€ docker run nginx             โ†’ Chแบกy container
โ”œโ”€ docker run -d nginx          โ†’ Chแบกy background (detached)
โ”œโ”€ docker run --name web nginx  โ†’ ฤแบทt tรชn container
โ”œโ”€ docker ps                    โ†’ List containers ฤ‘ang chแบกy
โ”œโ”€ docker ps -a                 โ†’ List TแบคT Cแบข containers
โ”œโ”€ docker stop <id>             โ†’ Dแปซng container
โ”œโ”€ docker start <id>            โ†’ Chแบกy lแบกi
โ”œโ”€ docker logs <id>             โ†’ Xem logs
โ”œโ”€ docker exec -it <id> sh     โ†’ SSH vร o container
โ””โ”€ docker rm <id>               โ†’ Xรณa container

๐Ÿ”Œ 9. Port Binding

Container chแบกy trong Docker network riรชng โ€” browser khรดng truy cแบญp ฤ‘ฦฐแปฃc trแปฑc tiแบฟp.

Vแบฅn ฤแป

Without Port Binding:

  Browser (localhost:80)
       โ”‚
       โœ– Khรดng truy cแบญp ฤ‘ฦฐแปฃc!
       โ”‚
  Container (port 80)
  (isolated network)

Giแบฃi Phรกp: Port Binding

With Port Binding:

  Browser
  localhost:9000
       โ”‚
       โ–ผ
  Docker Host
  Port 9000
       โ”‚
       โ”‚  mapped to
       โ–ผ
  Container
  Port 80

  Command: docker run -p 9000:80 nginx
                       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
                       host:container
Vรญ dแปฅ chแบกy nhiแปu containers:

  localhost:3000 โ”€โ”€โ–บ Container A (Node.js, port 3000)
  localhost:5432 โ”€โ”€โ–บ Container B (Postgres, port 5432)
  localhost:6379 โ”€โ”€โ–บ Container C (Redis, port 6379)

  docker run -p 3000:3000 node-app
  docker run -p 5432:5432 postgres
  docker run -p 6379:6379 redis

Format: -p HOST_PORT:CONTAINER_PORT


๐Ÿ“„ 10. Dockerfile โ€” Build Custom Image

Dockerfile Lร  Gรฌ?

Dockerfile = file chแปฉa instructions ฤ‘แปƒ build Docker image tแปซ code cแปงa bแบกn.

Flow

Application Code (src/)
+ package.json
+ Dockerfile
       โ”‚
       โ–ผ
docker build -t myapp:1.0 .
       โ”‚
       โ–ผ
Docker Image (myapp:1.0)
       โ”‚
       โ–ผ
docker run -p 3000:3000 myapp:1.0
       โ”‚
       โ–ผ
Container Running โœ…

Vรญ Dแปฅ Dockerfile (Node.js)

FROM node:19-alpine         โ† Base image (Node.js trรชn Alpine Linux)

WORKDIR /app                โ† Thฦฐ mแปฅc lร m viแป‡c trong container

COPY package.json .         โ† Copy package.json trฦฐแป›c (cache layer)

RUN npm install             โ† Install dependencies

COPY src/ ./src             โ† Copy source code

EXPOSE 3000                 โ† Document port (khรดng tแปฑ bind)

CMD ["node", "src/server.js"]  โ† Lแป‡nh chแบกy khi container start

Dockerfile Instructions

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚         Dockerfile Instructions              โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                                              โ”‚
โ”‚  FROM       โ†’ Base image                     โ”‚
โ”‚  WORKDIR    โ†’ Set working directory          โ”‚
โ”‚  COPY       โ†’ Copy files vร o image           โ”‚
โ”‚  RUN        โ†’ Chแบกy command khi build         โ”‚
โ”‚  EXPOSE     โ†’ Document port                  โ”‚
โ”‚  ENV        โ†’ Set environment variable       โ”‚
โ”‚  CMD        โ†’ Command chแบกy khi start         โ”‚
โ”‚  ENTRYPOINT โ†’ Fixed command (override khรณ)   โ”‚
โ”‚                                              โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Layer Caching (Tแป‘i ฦฏu Build)

Dockerfile layers (mแป—i instruction = 1 layer):

  FROM node:19-alpine        โ† Layer 1 (cached)
  WORKDIR /app               โ† Layer 2 (cached)
  COPY package.json .        โ† Layer 3 (cached nแบฟu khรดng ฤ‘แป•i)
  RUN npm install            โ† Layer 4 (cached nแบฟu package.json khรดng ฤ‘แป•i)
  COPY src/ ./src            โ† Layer 5 (rebuild khi code thay ฤ‘แป•i)

  Tip: COPY package.json TRฦฏแปšC, COPY src/ SAU
  โ†’ npm install ฤ‘ฦฐแปฃc cache khi chแป‰ ฤ‘แป•i code
  โ†’ Build nhanh hฦกn nhiแปu

๐Ÿ”„ 11. Container Lifecycle

Container Lifecycle:

  Created
     โ”‚
     โ”‚  docker start
     โ–ผ
  Running โ—„โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
     โ”‚             โ”‚
     โ”‚  docker     โ”‚  docker restart
     โ”‚  stop       โ”‚
     โ–ผ             โ”‚
  Stopped โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
     โ”‚
     โ”‚  docker rm
     โ–ผ
  Deleted
Cรกc lแป‡nh lifecycle:

  docker create <image>    โ†’ Tแบกo container (chฦฐa chแบกy)
  docker start <id>        โ†’ Chแบกy container
  docker stop <id>         โ†’ Dแปซng container (graceful)
  docker kill <id>         โ†’ Dแปซng ngay lแบญp tแปฉc (force)
  docker restart <id>      โ†’ Restart
  docker rm <id>           โ†’ Xรณa container
  docker rm -f <id>        โ†’ Force xรณa (kแปƒ cแบฃ ฤ‘ang chแบกy)

๐Ÿš€ 12. Docker Trong Software Development Lifecycle

Docker Nแบฑm แปž ฤรขu?

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚         Software Development Lifecycle               โ”‚
โ”‚                                                      โ”‚
โ”‚  1. DEVELOPMENT                                      โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                    โ”‚
โ”‚  โ”‚ Developer Laptop            โ”‚                    โ”‚
โ”‚  โ”‚                             โ”‚                    โ”‚
โ”‚  โ”‚ docker run postgres         โ”‚                    โ”‚
โ”‚  โ”‚ docker run redis            โ”‚                    โ”‚
โ”‚  โ”‚ Code + Test locally         โ”‚                    โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                    โ”‚
โ”‚                 โ”‚                                    โ”‚
โ”‚  2. CI/CD       โ”‚                                    โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                    โ”‚
โ”‚  โ”‚ Git Push                    โ”‚                    โ”‚
โ”‚  โ”‚      โ”‚                      โ”‚                    โ”‚
โ”‚  โ”‚ CI Pipeline                 โ”‚                    โ”‚
โ”‚  โ”‚ โ”œโ”€ Run tests                โ”‚                    โ”‚
โ”‚  โ”‚ โ”œโ”€ docker build             โ”‚                    โ”‚
โ”‚  โ”‚ โ””โ”€ docker push (to registry)โ”‚                    โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                    โ”‚
โ”‚                 โ”‚                                    โ”‚
โ”‚  3. DEPLOYMENT  โ”‚                                    โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                    โ”‚
โ”‚  โ”‚ Server / Kubernetes         โ”‚                    โ”‚
โ”‚  โ”‚      โ”‚                      โ”‚                    โ”‚
โ”‚  โ”‚ docker pull                 โ”‚                    โ”‚
โ”‚  โ”‚ docker run                  โ”‚                    โ”‚
โ”‚  โ”‚      โ”‚                      โ”‚                    โ”‚
โ”‚  โ”‚ Application Running โœ…      โ”‚                    โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                    โ”‚
โ”‚                                                      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

CI/CD Pipeline Chi Tiแบฟt

Developer
    โ”‚
    โ–ผ
Git Push (GitHub / GitLab)
    โ”‚
    โ–ผ
CI/CD Pipeline (GitHub Actions / Jenkins)
    โ”‚
    โ”œโ”€โ”€ Step 1: Checkout code
    โ”‚
    โ”œโ”€โ”€ Step 2: Run tests
    โ”‚
    โ”œโ”€โ”€ Step 3: docker build -t myapp:v2.1 .
    โ”‚
    โ”œโ”€โ”€ Step 4: docker push registry/myapp:v2.1
    โ”‚
    โ””โ”€โ”€ Step 5: Deploy to server/K8s
                    โ”‚
                    โ–ผ
              docker pull registry/myapp:v2.1
                    โ”‚
                    โ–ผ
              docker run myapp:v2.1
                    โ”‚
                    โ–ผ
              Application Running โœ…

๐ŸŒ 13. Real World Example โ€” Web App + MongoDB

Development Flow

Developer Laptop
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                              โ”‚
โ”‚  docker run mongo            โ”‚  โ† Database
โ”‚  docker run redis            โ”‚  โ† Cache
โ”‚                              โ”‚
โ”‚  node src/server.js          โ”‚  โ† App (hoแบทc cลฉng docker)
โ”‚                              โ”‚
โ”‚  Code โ†’ Test โ†’ Repeat        โ”‚
โ”‚                              โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
               โ”‚
               โ–ผ
          Git Push
               โ”‚
               โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚      CI/CD Pipeline          โ”‚
โ”‚                              โ”‚
โ”‚  Run tests                   โ”‚
โ”‚  docker build -t webapp:v2   โ”‚
โ”‚  docker push ecr/webapp:v2   โ”‚
โ”‚                              โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
               โ”‚
               โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚     Production Server        โ”‚
โ”‚                              โ”‚
โ”‚  docker pull ecr/webapp:v2   โ”‚
โ”‚  docker run webapp:v2        โ”‚
โ”‚  docker run mongo            โ”‚
โ”‚  docker run redis            โ”‚
โ”‚                              โ”‚
โ”‚  Application Live โœ…         โ”‚
โ”‚                              โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿณ + โ˜ธ๏ธ 14. Docker + Kubernetes โ€” Big Picture

Docker Tแบกo, Kubernetes Quแบฃn Lรฝ

Developer
    โ”‚
    โ–ผ
Write Code + Dockerfile
    โ”‚
    โ–ผ
docker build -t myapp:v2
    โ”‚
    โ–ผ
docker push registry/myapp:v2
    โ”‚
    โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚        Docker Registry       โ”‚
โ”‚   (Docker Hub / AWS ECR)     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
               โ”‚
               โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚        Kubernetes            โ”‚
โ”‚                              โ”‚
โ”‚  Pull image from registry    โ”‚
โ”‚         โ”‚                    โ”‚
โ”‚    โ”Œโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”              โ”‚
โ”‚    โ–ผ    โ–ผ    โ–ผ              โ”‚
โ”‚  Pod1  Pod2  Pod3           โ”‚
โ”‚  (v2)  (v2)  (v2)          โ”‚
โ”‚                              โ”‚
โ”‚  K8s handles:                โ”‚
โ”‚  โ”œโ”€ Scaling                  โ”‚
โ”‚  โ”œโ”€ Self-healing             โ”‚
โ”‚  โ”œโ”€ Load balancing           โ”‚
โ”‚  โ””โ”€ Rolling updates          โ”‚
โ”‚                              โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
Vai trรฒ:

  Docker      โ†’ BUILD & PACKAGE (tแบกo image)
  Registry    โ†’ STORE (lฦฐu image)
  Kubernetes  โ†’ RUN & MANAGE (chแบกy & quแบฃn lรฝ containers)

  Docker KHร”NG quแบฃn lรฝ 100+ containers
  Kubernetes Lร€M viแป‡c ฤ‘รณ

๐Ÿ“Š 15. Docker Compose โ€” Chแบกy Nhiแปu Containers

Khi Cแบงn Nhiแปu Services Cรนng Lรบc

Thay vรฌ chแบกy tแปซng lแป‡nh:

  docker run -p 3000:3000 webapp
  docker run -p 5432:5432 postgres
  docker run -p 6379:6379 redis

Dรนng Docker Compose:

  docker-compose up

  โ†’ Chแบกy TแบคT Cแบข services cรนng lรบc
  โ†’ Define trong 1 file docker-compose.yml

docker-compose.yml

version: '3.8'

services:
  webapp:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - database
      - cache

  database:
    image: postgres:16
    ports:
      - "5432:5432"
    environment:
      POSTGRES_PASSWORD: secret

  cache:
    image: redis:7
    ports:
      - "6379:6379"
docker-compose up
       โ”‚
       โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Docker Compose Network  โ”‚
โ”‚                          โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚webapp  โ”‚ โ”‚postgresโ”‚  โ”‚
โ”‚  โ”‚:3000   โ”‚ โ”‚:5432   โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚      โ”‚                   โ”‚
โ”‚      โ”‚      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚      โ””โ”€โ”€โ”€โ”€โ”€โ–บโ”‚ redis  โ”‚  โ”‚
โ”‚             โ”‚:6379   โ”‚  โ”‚
โ”‚             โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚                          โ”‚
โ”‚  Services tแปฑ tรฌm thแบฅy   โ”‚
โ”‚  nhau qua tรชn service   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ—บ๏ธ 16. Tแป•ng Hแปฃp โ€” Docker Ecosystem

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              DOCKER ECOSYSTEM                        โ”‚
โ”‚                                                      โ”‚
โ”‚  DEVELOPMENT                                         โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”‚
โ”‚  โ”‚ Dockerfile    โ†’ Build instructions          โ”‚     โ”‚
โ”‚  โ”‚ docker build  โ†’ Create image                โ”‚     โ”‚
โ”‚  โ”‚ docker run    โ†’ Run container               โ”‚     โ”‚
โ”‚  โ”‚ Compose       โ†’ Multi-container setup       โ”‚     โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ”‚
โ”‚                      โ”‚                               โ”‚
โ”‚  REGISTRY            โ”‚                               โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”‚
โ”‚  โ”‚ Docker Hub    โ†’ Public images               โ”‚     โ”‚
โ”‚  โ”‚ AWS ECR       โ†’ Private images              โ”‚     โ”‚
โ”‚  โ”‚ docker push   โ†’ Upload image                โ”‚     โ”‚
โ”‚  โ”‚ docker pull   โ†’ Download image              โ”‚     โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ”‚
โ”‚                      โ”‚                               โ”‚
โ”‚  PRODUCTION          โ”‚                               โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”‚
โ”‚  โ”‚ Kubernetes    โ†’ Orchestrate containers      โ”‚     โ”‚
โ”‚  โ”‚ Docker Swarm  โ†’ Simple orchestration        โ”‚     โ”‚
โ”‚  โ”‚ AWS ECS       โ†’ Managed containers          โ”‚     โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ”‚
โ”‚                                                      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐ŸŽฏ 17. Checklist Tแปฑ ฤรกnh Giรก

Fundamentals

  • Hiแปƒu Docker giแบฃi quyแบฟt vแบฅn ฤ‘แป gรฌ?
  • Phรขn biแป‡t Docker Image vs Container?
  • Biแบฟt Docker vs Virtual Machine khรกc gรฌ?

Commands

  • Biแบฟt docker pull, run, ps, stop, logs?
  • Hiแปƒu port binding (-p HOST:CONTAINER)?
  • Biแบฟt docker exec ฤ‘แปƒ SSH vร o container?

Dockerfile

  • Viแบฟt ฤ‘ฦฐแปฃc Dockerfile cho app ฤ‘ฦกn giแบฃn?
  • Hiแปƒu layer caching (COPY package.json trฦฐแป›c)?
  • Biแบฟt FROM, WORKDIR, COPY, RUN, CMD?

Registry & Workflow

  • Hiแปƒu Docker Hub vร  private registry?
  • Biแบฟt docker push/pull workflow?
  • Hiแปƒu Docker nแบฑm แปŸ ฤ‘รขu trong CI/CD pipeline?

Advanced

  • Biแบฟt Docker Compose chแบกy nhiแปu containers?
  • Hiแปƒu Docker + Kubernetes relationship?

๐Ÿ’ก Tแป•ng Kแบฟt

Docker Core Concepts:

 1๏ธโƒฃ  Image       โ†’ Template (blueprint) cแปงa container
 2๏ธโƒฃ  Container   โ†’ Running instance cแปงa image
 3๏ธโƒฃ  Dockerfile  โ†’ Instructions ฤ‘แปƒ build image
 4๏ธโƒฃ  Registry    โ†’ Nฦกi lฦฐu trแปฏ images
 5๏ธโƒฃ  Port Bind   โ†’ Expose container ra host
 6๏ธโƒฃ  Compose     โ†’ Chแบกy multi-container
 7๏ธโƒฃ  CLI         โ†’ Tool quแบฃn lรฝ Docker
Docker trong DevOps Pipeline:

  Code โ†’ Dockerfile โ†’ Build Image โ†’ Push Registry
                                         โ”‚
                                         โ–ผ
                          Server / Kubernetes pull & run
Interview Priority:

  โญโญโญ Image vs Container (core concept)
  โญโญโญ Dockerfile (build custom image)
  โญโญโญ Docker + CI/CD pipeline
  โญโญ  Docker vs VM
  โญโญ  Port binding & networking
  โญโญ  Docker Compose
  โญ    Docker + Kubernetes relationship

โ€œDocker doesnโ€™t solve all problems. But it solves the โ€˜it works on my machineโ€™ problem โ€” and thatโ€™s a big one.โ€


๐Ÿ“š Tร i Liแป‡u Tham Khแบฃo


Bร i liรชn quan: