</>
⌕
← Trang chủ
Dk

Docker

Image, container, volume, network

🃏 Ôn bằng flashcard
Tiến độ0/13 · 0%
Junior

Các lệnh Docker cơ bản cần nắm

docker build tạo image, docker run tạo và chạy container (-d nền, -p map port, -v mount, --name, --rm), docker ps liệt kê container, docker logs xem log, docker exec chạy lệnh trong container, docker stop/rm dừng và xoá.

#cli#run#ps
Junior

CMD và ENTRYPOINT khác nhau thế nào?

ENTRYPOINT định nghĩa chương trình chính luôn chạy của container; CMD cung cấp tham số mặc định, dễ bị ghi đè bằng đối số của docker run. Dùng chung: ENTRYPOINT là lệnh cố định, CMD là đối số mặc định. Nên dùng dạng exec (mảng JSON).

#dockerfile#cmd#entrypoint
Junior

Container khác máy ảo (VM) ở điểm nào?

VM ảo hoá phần cứng với guest OS riêng chạy trên hypervisor; container chia sẻ kernel của host và chỉ cô lập tiến trình bằng namespace, giới hạn tài nguyên bằng cgroup. Container nhẹ, khởi động nhanh nhưng cô lập yếu hơn VM.

#container#vm#isolation
Junior

Image và container khác nhau thế nào?

Image là bản mẫu chỉ đọc (gồm code, runtime, thư viện); container là một instance đang chạy của image, có thêm một lớp ghi riêng và sẽ mất dữ liệu khi xóa nếu không dùng volume.

#image#container
Mid

COPY vs ADD và vai trò của .dockerignore

COPY chỉ sao chép file từ build context vào image. ADD làm thêm việc giải nén tar cục bộ và tải URL nên khó đoán, chỉ dùng khi cần. .dockerignore loại file khỏi build context, giúp build nhanh hơn, tránh lộ secret và không phá layer cache.

#dockerfile#copy#add
Mid

Docker Compose: healthcheck và depends_on hoạt động ra sao?

depends_on mặc định chỉ đảm bảo thứ tự khởi động container, không chờ dịch vụ sẵn sàng. Kết hợp healthcheck với depends_on điều kiện service_healthy để service phụ thuộc chỉ chạy khi dependency báo healthy.

#compose#healthcheck#depends_on
Mid

Docker volume dùng để làm gì? Các container giao tiếp với nhau ra sao?

Volume lưu dữ liệu bền vững ngoài vòng đời container. Các container trong cùng network tự định tuyến bằng tên service (DNS nội bộ), ví dụ db:5432.

#volume#network#compose
Mid

Làm sao để Dockerfile build nhanh và image nhỏ?

Sắp xếp lệnh ít thay đổi lên trước để tận dụng layer cache, dùng multi-stage build để bỏ công cụ build khỏi image cuối, chọn base image nhỏ (alpine/slim) và thêm .dockerignore.

#dockerfile#multi-stage
Mid

Quản lý biến môi trường và secret trong Docker

Cấu hình không nhạy cảm truyền qua ENV hoặc --env-file lúc chạy. Secret không được ghi vào Dockerfile (ENV/ARG) vì lưu trong layer và docker history. Dùng Docker/Compose secrets (mount file), BuildKit --mount=type=secret khi build, hoặc secret manager của orchestrator.

#env#secrets#security
Mid

Xem log và debug container đang lỗi như thế nào?

Bắt đầu với docker logs để xem stdout/stderr, docker ps -a và exit code để biết lý do dừng, docker inspect xem cấu hình, docker exec -it vào shell, docker stats xem tài nguyên. App nên ghi log ra stdout/stderr để logging driver thu thập.

#debug#logs#inspect
Senior

Các biện pháp bảo mật container quan trọng

Chạy bằng user không phải root, dùng base image nhỏ và pin phiên bản, scan lỗ hổng image (Trivy, Grype), bỏ capability thừa, filesystem read-only, không dùng --privileged, không mount docker.sock, không nhúng secret vào image, và cập nhật image thường xuyên.

#security#non-root#scan
Senior

Giới hạn CPU và memory cho container, OOMKilled là gì?

Giới hạn qua cgroup: --memory đặt trần RAM (vượt thì kernel OOM kill, exit 137), --cpus hoặc --cpu-shares giới hạn CPU. Memory là giới hạn cứng, CPU bị throttle chứ không kill. Runtime như JVM, Node cần cấu hình nhận biết limit của container.

#cgroup#memory#cpu
Senior

Kubernetes cơ bản: Pod, Deployment, Service

Pod là đơn vị chạy nhỏ nhất, gồm một hay nhiều container chia sẻ network và volume. Deployment quản lý ReplicaSet để giữ số bản sao mong muốn và rolling update. Service cấp IP/DNS ổn định và cân bằng tải tới các Pod chọn bằng label.

#kubernetes#pod#deployment