Page cover

Docker

Trang này chứa các mẹo và tài nguyên để chuẩn bị cho các cuộc phỏng vấn Docker.


Dưới đây là 30 câu hỏi phỏng vấn về Docker từ cơ bản đến nâng cao, kèm theo câu trả lời ngắn gọn và dễ hiểu. Các câu hỏi được sắp xếp theo mức độ từ dễ đến khó.


Câu hỏi cơ bản

  1. Docker là gì? Trả lời: Docker là một nền tảng dùng để container hóa ứng dụng, giúp đóng gói ứng dụng cùng các phụ thuộc (dependencies) vào một đơn vị gọi là container, đảm bảo ứng dụng chạy đồng nhất trên mọi môi trường.

  2. Container khác gì với máy ảo (VM)? Trả lời: Container nhẹ hơn VM vì nó chia sẻ kernel của hệ điều hành host, trong khi VM cần một hệ điều hành riêng biệt và hypervisor.

  3. Docker Image là gì? Trả lời: Docker Image là một bản mẫu chỉ đọc (read-only) chứa mã nguồn, thư viện, công cụ và cấu hình để tạo ra container.

  4. Docker Container là gì? Trả lời: Docker Container là một instance chạy được tạo từ Docker Image, chứa ứng dụng và môi trường thực thi.

  5. Dockerfile dùng để làm gì? Trả lời: Dockerfile là một tệp chứa các lệnh để xây dựng Docker Image, như cài đặt phần mềm, sao chép tệp, hoặc chạy lệnh.

  6. Lệnh docker run làm gì? Trả lời: Lệnh docker run tạo và khởi động một container từ một image.

  7. Làm thế nào để liệt kê tất cả các container đang chạy? Trả lời: Dùng lệnh docker ps (thêm -a để xem cả container đã dừng: docker ps -a).

  8. Câu lệnh nào dùng để xóa một container? Trả lời: Dùng docker rm <container_id> (container phải dừng trước, hoặc thêm -f để buộc xóa).

  9. Docker Hub là gì? Trả lời: Docker Hub là một kho lưu trữ trực tuyến để lưu và chia sẻ Docker Image.

  10. Lệnh docker pull có tác dụng gì? Trả lời: Lệnh docker pull tải một image từ Docker Hub hoặc registry khác về máy local.


Câu hỏi trung cấp

  1. Docker Compose là gì? Trả lời: Docker Compose là công cụ để định nghĩa và quản lý nhiều container (multi-container) bằng tệp YAML (docker-compose.yml).

  2. Lệnh nào dùng để build một Docker Image từ Dockerfile? Trả lời: Dùng docker build -t <image_name> . (dấu chấm biểu thị thư mục hiện tại chứa Dockerfile).

  3. Port mapping trong Docker là gì? Trả lời: Port mapping là ánh xạ cổng từ container ra host để truy cập dịch vụ bên trong container, ví dụ: -p 8080:80.

  4. Volume trong Docker dùng để làm gì? Trả lời: Volume là cơ chế lưu trữ dữ liệu bền vững ngoài container, tránh mất dữ liệu khi container bị xóa.

  5. Lệnh nào để xem log của một container? Trả lời: Dùng docker logs <container_id>.

  6. Docker Network là gì? Trả lời: Docker Network là hệ thống mạng cho phép các container giao tiếp với nhau hoặc với host, có các loại như bridge, host, overlay.

  7. Làm sao để chạy container ở chế độ nền (detached mode)? Trả lời: Thêm tùy chọn -d vào lệnh docker run, ví dụ: docker run -d <image>.

  8. Lệnh nào để dừng một container đang chạy? Trả lời: Dùng docker stop <container_id>.

  9. Câu lệnh nào để xem thông tin chi tiết của một image? Trả lời: Dùng docker inspect <image_id>.

  10. Docker Registry là gì? Trả lời: Docker Registry là nơi lưu trữ và phân phối Docker Image, ví dụ: Docker Hub, hoặc có thể tự dựng private registry.


Câu hỏi nâng cao

  1. Docker Swarm là gì? Trả lời: Docker Swarm là công cụ tích hợp trong Docker để quản lý và điều phối (orchestration) nhiều container trên nhiều node, tạo thành một cụm (cluster).

  2. Sự khác biệt giữa CMDENTRYPOINT trong Dockerfile? Trả lời: CMD cung cấp lệnh mặc định có thể bị ghi đè, còn ENTRYPOINT xác định lệnh chính không thể ghi đè trừ khi dùng --entrypoint.

  3. Làm sao để tối ưu kích thước của Docker Image? Trả lời: Sử dụng image cơ sở nhỏ (như Alpine), gộp lệnh RUN để giảm layer, xóa tệp tạm sau khi cài đặt.

  4. Docker multi-stage build là gì? Trả lời: Multi-stage build là kỹ thuật dùng nhiều giai đoạn trong Dockerfile để xây dựng image nhỏ hơn, chỉ giữ lại những gì cần thiết ở giai đoạn cuối.

  5. Lệnh nào để xem tài nguyên mà container đang sử dụng? Trả lời: Dùng docker stats để xem CPU, RAM, mạng của các container đang chạy.

  6. Overlay Network trong Docker dùng để làm gì? Trả lời: Overlay Network cho phép các container trên các host khác nhau giao tiếp trong một cụm Docker Swarm.

  7. Docker Secrets là gì? Trả lời: Docker Secrets là cơ chế lưu trữ và quản lý dữ liệu nhạy cảm (như mật khẩu, API key) trong Swarm, mã hóa và chỉ cung cấp cho container cần thiết.

  8. Làm sao để debug một container không hoạt động như mong muốn? Trả lời: Dùng docker logs để xem log, docker exec -it <container_id> /bin/bash để vào shell, hoặc docker inspect để kiểm tra cấu hình.

  9. Câu lệnh nào để xóa tất cả các image không sử dụng? Trả lời: Dùng docker image prune (thêm -a để xóa cả image không được tag).

  10. Docker Content Trust (DCT) là gì? Trả lời: Docker Content Trust là tính năng bảo mật dùng chữ ký số để xác minh tính toàn vẹn và nguồn gốc của Docker Image khi pull hoặc push.


Last updated