Kỹ năng phỏng vấn tuyển dụng

Top 15 Câu Hỏi Phỏng Vấn Docker Phổ Biến Nhất

Docker là một công cụ thiết yếu và quen thuộc đối với nhiều Coder và Developer, được dùng chủ yếu để triển khai và quản lý ứng dụng. Nếu bạn đang chuẩn bị cho một cuộc phỏng vấn liên quan đến Docker, thì việc nắm vững cách trả lời cho các câu hỏi phỏng vấn phổ biến nhất là rất quan trọng. Trong bài viết này, Masterskills sẽ cùng bạn khám phá top 15câu hỏi phỏng vấn Docker phổ biến nhất, từ cơ bản đến nâng cao.

Câu hỏi phỏng vấn Docker cơ bản 

1. Bạn có thể giới thiệu đôi chút về docker container được không? 

Đây chính là câu hỏi phỏng vấn Docker phổ biến mà bạn thường hay gặp phải ở phần đầu của buổi phỏng vấn. Nói một cách đơn giản nhất, Docker Container bao gồm các ứng dụng và tất cả các phần phụ thuộc của chúng. Chúng chia sẻ tài nguyên hệ thống và hạt nhân với các bộ chứa khác và chạy dưới dạng các hệ thống biệt lập trong hệ điều hành máy chủ. 

Mục đích chính của Docker Container là loại bỏ sự phụ thuộc vào cơ sở hạ tầng trong khi triển khai và chạy các ứng dụng. Điều này có nghĩa là mọi ứng dụng được đóng gói có thể chạy trên mọi nền tảng bất kể cơ sở hạ tầng được sử dụng bên dưới. Về mặt kỹ thuật, chúng chỉ là phiên bản thời gian chạy của Docker images.

2. Docker images là gì? 

Docker images là các gói chứa tất cả các thành phần cần thiết để chạy một ứng dụng. Chúng bao gồm các tệp thực thi, thư viện, biến môi trường và các tài nguyên cần thiết khác. Docker images có thể được coi là ảnh chụp nhanh di động và có thể tái tạo của container.

3. DockerFile là gì? 

Dockerfile là một tệp văn bản chứa các hướng dẫn và lệnh để xây dựng Docker images. Nó mô tả các bước cần thiết để tạo một image, chẳng hạn như cài đặt phần mềm, thiết lập môi trường và cấu hình hệ thống.

4. Bạn có thể cho biết chức năng của một hypervisor là gì không? 

Hypervisor là một phần mềm thực hiện quá trình ảo hóa vì phần mềm này đôi khi được gọi là Trình giám sát máy ảo. Nó phân chia tài nguyên của hệ thống máy chủ và phân bổ chúng cho từng môi trường khách được cài đặt. Điều này có nghĩa là nhiều hệ điều hành có thể được cài đặt trên một hệ thống máy chủ duy nhất. Hypervisors có 2 loại:

  • 1. Native Hypervisor: Loại này còn được gọi là Bare-metal Hypervisor và chạy trực tiếp trên hệ thống máy chủ cơ bản, giúp đảm bảo quyền truy cập trực tiếp vào phần cứng máy chủ, đó là lý do tại sao nó không yêu cầu hệ điều hành cơ sở.
  • 2. Hosted Hypervisor: Loại này sử dụng hệ điều hành máy chủ cơ bản đã cài đặt hệ điều hành hiện có.

5. Bạn biết gì về Docker Composer? 

Docker Composer là một tệp YAML bao gồm tất cả các chi tiết liên quan đến các dịch vụ, mạng và ổ đĩa khác nhau cần thiết để thiết lập ứng dụng dựa trên Docker. Vì vậy, docker-compose được sử dụng để tạo nhiều container, lưu trữ và thiết lập giao tiếp giữa chúng. Với mục đích liên lạc giữa các container, các cổng được hiển thị bởi từng container.

Câu hỏi phỏng vấn Docker trung cấp 

6. Phân biệt giữa visualization và containerization 

Visualization và containerization là hai cách tiếp cận khác nhau để chạy và quản lý ứng dụng. Hiểu được sự khác biệt giữa các khái niệm này là rất quan trọng trong ngữ cảnh của Docker.

Tham khảo:   12 Câu Hỏi Phỏng Vấn Chuyên Viên Tuyển Dụng Hay Gặp Nhất 

Visualization liên quan đến việc chạy nhiều máy ảo (VM) trên một máy vật lý. Mỗi VM hoạt động như một môi trường khép kín với hệ điều hành, thư viện và ứng dụng riêng. Trình ảo hóa, là lớp phần mềm hoặc phần cứng, cho phép tạo và quản lý các máy ảo này. Mỗi VM tiêu thụ các tài nguyên như CPU, bộ nhớ và dung lượng ổ đĩa và chạy độc lập với các VM khác.

Mặt khác, containerization là một giải pháp thay thế nhẹ cho visualization. Các bộ chứa chia sẻ nhân của hệ điều hành máy chủ trong khi cung cấp các môi trường thời gian chạy bị cô lập cho các ứng dụng. Chúng hiệu quả hơn về mặt sử dụng tài nguyên vì chúng không yêu cầu hệ điều hành riêng cho từng container.

Trong visualization, mỗi máy ảo được cách ly hoàn toàn với các máy ảo khác và hệ thống máy chủ. Sự cô lập này đảm bảo rằng bất kỳ sự cố hoặc thay đổi nào trong một máy ảo đều không ảnh hưởng đến các máy ảo khác. Trong containerization, các container chia sẻ nhân của hệ điều hành máy chủ nhưng cung cấp sự cô lập ở cấp độ quy trình. Các container được cách ly với nhau, nhưng chúng không bị cô lập như các máy ảo.

7. Phân biệt các lệnh COPY và ADD được sử dụng trong DockerFile

Cả hai lệnh đều có chức năng tương tự nhau, nhưng COPY được ưu tiên hơn vì mức độ dễ sử dụng cao hơn so với ADD.

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

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

Câu trả lời cho câu hỏi phỏng vấn Docker này là có. Nhưng chỉ có thể thực hiện được khi sử dụng một số lệnh do Docker xác định khi sử dụng lệnh docker run. Sau đây là các lệnh có sẵn:

  • 1. Off: Trong trường hợp này, 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. On-failure: Ở đây, container chỉ tự khởi động lại khi gặp lỗi không liên quan đến người dùng.
  • 3. Unless-stopped: Sử dụng lệnh này, ta có thể đảm bảo rằng container chỉ có thể khởi động lại khi lệnh được thực thi để dừng container bởi người dùng.
  • 4. Always: Bất kể lỗi hay dừng, container luôn được khởi động lại trong loại lệnh này.

9. Hãy cho biết sự khác biệt giữa một Docker image và Layer

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

Layer: Mỗi lớp tương ứng với một hướng dẫn thuộc Dockerfile của image. Nói một cách dễ hiểu, layer cũng là một dạng image nhưng nó là hình ảnh của hướng dẫn chạy.

10. Hãy cho biết mục đích của các lệnh up, run và start trong Docker Composer

Khi sử dụng lệnh up để duy trì docker-compose up (lý tưởng nhất là Always), chúng ta có thể bắt đầu hoặc khởi động lại tất cả các mạng, dịch vụ và trình điều khiển được liên kết với ứng dụng được chỉ định trong tệp docker-compose.yml. Nếu bạn đang chạy docker-compose up ở chế độ “attached” thì bạn có thể truy cập tất cả nhật ký từ các container. Trong trường hợp docker-compose được chạy ở chế độ “tách rời”, thì khi các container được khởi động, nó sẽ thoát ra và không hiển thị nhật ký.

Tham khảo:   Top 13 Câu Hỏi Phỏng Vấn Data Engineer Hay Gặp Nhất [Theo Coursera]

Khi sử dụng lệnh run, docker-compose có thể chạy các tác vụ một lần hoặc đặc biệt dựa trên các yêu cầu kinh doanh. Ở đây, tên dịch vụ phải được cung cấp và docker chỉ bắt đầu dịch vụ cụ thể đó và cả các dịch vụ khác mà dịch vụ đích phụ thuộc (nếu có). Lệnh này hữu ích để kiểm tra các container và cũng thực hiện các tác vụ như thêm hoặc xóa dữ liệu vào các container, v.v.

Khi sử dụng lệnh start, chỉ những container đã được tạo và sau đó dừng lại mới có thể được khởi động lại. Điều này không hữu ích để tự tạo container mới.

Câu hỏi phỏng vấn Docker nâng cao 

11. Có thể sử dụng JSON thay cho YAML trong khi phát triển tệp docker-compose trong trong Docker không? 

Câu trả lời cho câu hỏi phỏng vấn Docker nâng cao này là hoàn toàn có thể! JSON có thể được sử dụng thay cho YAML. Để chạy docker-compose với JSON, bạn có thể sử dụng lệnh: docker-compose -f docker-compose.json up.

12. Bạn có thể chạy bao nhiêu container trong docker và các yếu tố ảnh hưởng đến giới hạn này là gì?

Không có giới hạn được xác định rõ ràng đối với số lượng container có thể chạy trong docker. Nhưng tất cả phụ thuộc vào những hạn chế – cụ thể hơn là những hạn chế về phần cứng. Kích thước của ứng dụng và tài nguyên CPU có sẵn là 2 yếu tố quan trọng ảnh hưởng đến giới hạn này. Trong trường hợp ứng dụng của bạn không lớn lắm và bạn có nhiều tài nguyên CPU, thì bạn có thể chạy một số lượng lớn các container.

13. Mô tả vòng đời của Docker Composer 

Các giai đoạn khác nhau của docker container từ khi bắt đầu tạo nó cho đến khi kết thúc được gọi là vòng đời của docker container.

Các giai đoạn quan trọng nhất là:

  • Created: Đây là trạng thái container vừa được tạo mới nhưng chưa bắt đầu.
  • Running: Ở trạng thái này, container sẽ chạy với tất cả các quy trình liên quan của nó.
  • Paused: Trạng thái này xảy ra khi container đang chạy bị tạm dừng.
  • Stopped: Trạng thái này xảy ra khi container đang chạy đã bị dừng.
  • Deleted: Trong trường hợp này, container đang ở trạng thái chết.

14. Làm cách nào để sử dụng Docker cho nhiều môi trường ứng dụng? 

Tính năng Docker-compose sẽ giúp bạn có thể sử dụng Docker cho nhiều môi trường ứng dụng. Trong tệp docker-compose, chúng ta có thể xác định nhiều dịch vụ, mạng và container cùng với ánh xạ âm lượng một cách rõ ràng, sau đó chúng ta chỉ cần gọi lệnh “docker-compose up”.

Khi có nhiều môi trường liên quan – đó có thể là máy chủ phát triển, dàn dựng, uat hoặc sản xuất, bạn có thể xác định các quy trình và quy trình phụ thuộc dành riêng cho máy chủ để chạy ứng dụng. Trong trường hợp này, bạn có thể tiếp tục tạo các tệp docker-compose dành riêng cho môi trường có tên “docker-compose.{environment}.yml”, sau đó dựa trên môi trường, chúng ta có thể thiết lập và chạy ứng dụng.

Tham khảo:   Phỏng Vấn Tiếng Anh Là Gì? Tips Vượt Qua Các Cuộc Phỏng Vấn Tiếng Anh

15. Làm thế nào để đảm bảo rằng container 1 chạy trước container 2 trong khi sử dụng docker compose?

Docker-compose không đợi bất kỳ container nào “sẵn sàng” trước khi tiếp tục với các container tiếp theo. Để đạt được thứ tự thực hiện, bạn có thể tham khảo lệnh sau:

Lệnh “depends_on” đã được thêm vào trong phiên bản 2 của docker-compose có thể được sử dụng như minh họa trong tệp docker-compose.yml mẫu bên dưới:

version: “2.4”

services:

 backend:

   build: .

   depends_on:

     – db

 db:

   image: postgres

Việc giới thiệu các phụ thuộc dịch vụ có nhiều nguyên nhân và tác động khác nhau:

  • Lệnh docker-compose up bắt đầu và chạy các dịch vụ theo thứ tự phụ thuộc được chỉ định. Đối với ví dụ trên, bộ chứa DB được bắt đầu trước phần phụ trợ.
  • docker-compose up SERVICE_NAME theo mặc định bao gồm các phần phụ thuộc được liên kết với dịch vụ. Trong ví dụ đã cho, việc chạy chương trình phụ trợ docker-compose up sẽ tạo và khởi động DB (sự phụ thuộc của chương trình phụ trợ).
  • Cuối cùng, lệnh docker-compose stop cũng dừng các dịch vụ theo thứ tự phụ thuộc được chỉ định. Đối với ví dụ đã cho, dịch vụ phụ trợ bị dừng trước dịch vụ DB.

Kết luận

Vậy là Masterskills đã cùng bạn tìm hiểu top 15 câu hỏi phỏng vấn Docker phổ biến nhất. Hy vọng những gợi ý trên sẽ giúp bạn có được sự chuẩn bị tốt nhất cho buổi phỏng vấn sắp tới. Nếu cảm thấy hứng thú với chủ đề tương tự, hãy ghé qua Blog của Masterskills để tìm hiểu thêm nhiều bộ câu hỏi phỏng vấn chất lượng dành cho Coder và Developer nhé!

Theo Interviewbit

  Viện Đào Tạo Kỹ Năng Masterskills chuyên Đào Tạo tại Doanh Nghiệp (In-house) trên Toàn Quốc  
G

0903966729

1
Hỗ trợ bạn qua Facebook
btn-dangkyhoc