TOP 35 câu hỏi phỏng vấn Docker và cách trả lời hay nhất (Phần 2)

274

Bài viết được sự cho phép của tác giả Nguyễn Thành Nam

Để giúp bạn chuẩn bị tốt nhất cho các cuộc phỏng vấn liên quan đến Docker, TopDev đã tổng hợp danh sách TOP 35 câu hỏi phỏng vấn Docker và cách trả lời hay nhất. Bỏ túi ngay để có một buổi phỏng vấn thật thành công bạn nhé.

11. Docker Hub là gì?​

  • Là một nền tảng đám mây được cung cấp bởi Docker cho phép lưu trữ công khai image của Docker đồng thời cho phép tìm kiếm và chia sẻ với người khác.
  • Image có thể được đẩy lên Docker Hub bằng câu lệnh docker push.

12. Lệnh để export một docket image như một archive?​

Cú pháp đó là:

docker save -o <exported_name>.tar <container-name>

13. Lệnh để import một Docker image đến một Docker host khác?​

docker load -i <export_image_name>.tar

14. Có thể xoá container bị tạm dừng khỏi Docker không?​

Không thể! Container phải bị dừng trạng thái trước khi ta có thể xoá chúng.

15. Lệnh kiểm tra phiên bản Docker client và server?​

Để kiểm tra tất cả không tin phiên bản client và server là:

docker version

Để lấy chỉ phiên bản server, ta có thể chạy:

docker version --format '{{.Server.Version}}'

  20 trường hợp sử dụng lệnh Docker cho developer

  Hiểu cơ chế layer caching khi build docker image để viết Dockerfile tốt hơn

16. Sự khác biệt giữa ảo hoá (virtualization) và containerization?​

virtualization containerization
Nó giúp chạy nhiều hệ điều hành trên phần cứng của một server vật lý Nó giúp triển khai nhiều ứng dụng trên cùng hệ điều hành trên một máy ảo hoặc server
Hypervisors cung cấp các máy ảo tổng thể cho hệ điều hành khách Container đảm bảo cung cấp môi trường/không gian người dùng biệt lập để chạy các ứng dụng. Mọi thay đổi được thực hiện trong container không phản ánh trên server hoặc các container khác của cùng server
Các máy ảo này tạo thành một phần trừu tượng của lớp phần cứng hệ thống, điều này có nghĩa là mỗi máy ảo trên host hoạt động giống như một máy vật lý Container tạo thành sự trừu tượng của lớp ứng dụng có nghĩa là mỗi container tạo thành một ứng dụng khác nhau

17. Sự khác biệt giữa lớp COPY và ADD trong Dockerfile?​

Cả hai có chức năng giống nhau, nhưng COPY được ưa thích hơn vì mức độ minh bạch cao hơn ADD.

COPY cung cấp các hỗ trợ cơ bản cho sao chép file cục bộ trong khi ADD cung cấp tính năng bổ sung như URL từ xa và hỗ trợ xuất tar.

18. Container có thể tự khởi động lại?​

Có, chỉ có thể thực hiện được khi đang sử dụng một số chính sách do docker xác định trong khi sử dụng lệnh run của docker. Sau đây là các chính sách hiện có:

  1. Off: container sẽ không được khởi động lại trong trường hợp nó bị dừng hoặc bị lỗi.
  2. Un-failure: Ở đây, container chỉ khởi động lại khi nó gặp lỗi không liên quan đến người dùng.
  3. Unless-stop: Sử dụng chính sách này, đảm bảo rằng container chỉ có thể khởi động lại khi người dùng thực hiện lệnh để dừng nó.
  4. Always: Bất kể lỗi hay dừng, container luôn được khởi động lại trong loại chính sách này.

Các chính sách này có thể dùng như sau:

docker run -dit — restart [restart-policy-value] [container_name]

19. Sự khác biệt giữa Docker Image và Layer?​

Image: được xây dựng từ một loạt các lớp instruction. Một image tương ứng với container và được sử dụng để vận hành nhanh chóng do cơ chế lưu vào bộ nhớ đệm của mỗi bước.

Layer: Mỗi layer tương ứng với một instruction của image của Dockerfile. Nói đơn giản hơn layer còn là image nhưng nó là image của instruction.

Ví dụ:

FROM ubuntu:18.04
COPY . /myapp
RUN make /myapp
CMD python /myapp/app.py

Quan trọng hơn, mỗi layer là một tập khác cảu layer trước đó.

Kết quả xây dựng file docker này là một image. Trong khi instruction hiện tại trong file thêm layer vào image.

20. Mục đích của tham số volume trong lệnh chạy docker là gì?​

Cú pháp của lệnh chạy docker sử dụng volumn là: docker run -v host_path:docker_path <container_name>.

Tham số volume được dùng cho đồng bộ hoá một thư mục trong container với bất kỳ thư mục host nào. Ví dụ: docker run -v /data/app:usr/src/app myapp. Lệnh trên gắn thứ mục /data/app trong host vào thư mục usr/src/app. Ta có thể đồng bộ container với file dữ liệu từ host mà không cần khởi động lại.

Điều này đảm bảo rằng ngay cả khi container bị xóa, dữ liệu của container vẫn tồn tại trong vị trí host lưu trữ được ánh xạ theo volume, làm cho nó trở thành cách dễ dàng nhất để lưu trữ dữ liệu container.

Bài viết gốc được đăng tải tại blog.thanhnamnguyen.dev

Xem thêm: 

Tham khảo thêm các vị trí tuyển dụng ngành IT tại Topdev