Table of Contents
Sự ngăn chặn đã biến đổi kỹ thuật phần mềm hiện đại bằng cách hiệu chỉnh sự sắp xếp nhất quán, di động và hiệu quả của ứng dụng này. Tại trung tâm của phong trào này là Docker, một nền tảng tự động hóa sự sáng tạo, triển khai và quản lý các thùng nhẹ. Đối với các kỹ sư, việc điều khiển công cụ và Docker không còn là tùy chọn khác nữa — nó là một tính chất chính: nó là một tính cạnh tranh cốt lõi. Bài này khám phá các nguyên tắc cơ bản, địa chỉ, các câu hỏi thông thường, và cung cấp khả năng hoạt động để giúp bạn sử dụng công cụ đẩy lùi trong dòng chảy thực tế.
Ngăn chặn sự nào?
Ngăn chặn là một phương pháp ảo nhỏ mà gói một ứng dụng với quan hệ phụ thuộc của nó — thư viện, tập tin cấu hình, nhị phân — thành một đơn vị đơn lẻ gọi là container. Không giống như máy ảo truyền thống (VMs), các hộp chứa cùng với hạt nhân hệ điều hành, mà loại bỏ trên đầu của việc chạy một khách riêng cho mỗi ứng dụng. Tính năng này làm cho hộp chứa nhỏ hơn, nhanh hơn để khởi động, và hiệu quả hơn.
Khái niệm về công-te-nơ hóa đã có từ những nhà tù u-pô đầu tiên và nhà tù FreeBSD, nhưng Docker đã phổ biến nó vào năm 2013 bằng cách cung cấp một máy vi mạch đơn giản và một hệ sinh thái mạnh mẽ. ngày nay, công-te-bu-ca-pô là nền tảng của những kiến trúc tạo mây, dịch vụ vi mô, và thực hành của DevOps.
Những khác biệt then chốt từ máy ảo
- Phần lớn mã nguồn: VMs bao gồm một hệ điều hành đầy đủ (nhân) tiêu thụ GB và RAM mỗi ví dụ. Các ngăn chặn thường đo lường mega- byte và chia sẻ hạt nhân chủ.
- Thời gian khởi động:) VM có thể mất vài phút để khởi động; một container khởi động trong một phần nghìn giây.
- [FLT: 0] Tính chất trục xuất: các chất ngăn chặn dễ mang hơn qua môi trường vì chúng chỉ chứa ứng dụng và các phụ thuộc thời gian chạy, không phải là hệ điều hành đầy đủ.
- Sự phân hủy: VMs cung cấp sự cô lập mạnh hơn qua sự tách cấp siêu tàng hình. Các ngăn chặn phụ thuộc vào không gian tên nhân và nhóm c nhóm, mà có thể gây ra thách thức an ninh nếu cấu hình sai.
Lợi ích cho các kỹ sư
- Sự phối hợp giữa môi trường: loại bỏ “các vấn đề về máy móc của tôi — cùng một vật chứa chạy trên máy tính xách tay của một nhà phát triển, một máy chủ dàn xếp và trong việc sản xuất.
- CN/CD: xây dựng, thử nghiệm, và triển khai sử dụng cùng một hình ảnh container trên đường ống.
- Trình phóng Rapid:) Các bộ phận chế tạo giống như Kubernetes có thể quay hàng trăm thùng hàng trong giây.
- Điều khiển sự quản lý cơ sở hạ tầng: Tập tin và thẻ ảnh cho phép bạn theo dõi chính xác cách một ứng dụng được xây dựng.
Các ý kiến tương quan về lõi
Để làm việc hiệu quả với Docker, các kỹ sư phải hiểu một vài thành phần cơ bản, mỗi khái niệm đóng vai trò quan trọng trong cách đóng thùng, phân phối và chạy.
Chọn ảnh và lớp
Ảnh kiểu Docker là mẫu chỉ đọc chứa các hướng dẫn để tạo một hộp. Ảnh được xây dựng từ một dãy, mỗi lớp đại diện một thay đổi (v. d., cài đặt gói, sao chép tập tin). Lớp được lưu và dùng lại trên các công cụ, để tăng tốc độ phát triển và giảm bớt. Khi bạn chạy một container, Docker thêm một lớp có khả năng ghi trên ảnh — tất cả các thay đổi bên trong hộp được viết vào lớp này và vứt bỏ khi các thùng chứa dừng lại.
Viết tập tin Docker có tính hiệu quả
Một tập tin Docker là một tài liệu chứa tất cả các lệnh cần lắp một ảnh. Những thực hiện tốt nhất bao gồm:
- Bắt đầu từ ảnh cơ bản tối thiểu (v. d., hoặc biến thể.
- Kết hợp các lệnh ) có liên quan đến để giảm số lớp.
- Dùng để loại bỏ các tập tin không cần thiết ra khỏi bối cảnh xây dựng.
- Việc chuyển đổi nhiều giai đoạn tạo nên để tách các phụ thuộc xây dựng và chạy thời gian.
Ví dụ, dấu phẩy tập tin Docker cho ứng dụng Node.js:
FROM node:18-alpine AS base
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
FROM node:18-alpine
WORKDIR /app
COPY --from=base /app/node_modules ./node_modules
COPY . .
CMD ["node", "server.js"]
Xe đạp chở sinh mạng
Một thùng chứa đi qua nhiều trạng thái: được tạo, chạy, dừng, dừng, dừng, và bị xoá. Docker cung cấp các lệnh như , , , , và . Hiểu rõ xe đạp giúp đỡ việc gỡ lỗi và quản lý nguồn lực.
Những câu hỏi thông thường cho các kỹ sư
Dưới đây là những câu trả lời chi tiết cho những câu hỏi thường được hỏi của Docker trong các cuộc phỏng vấn kỹ thuật và các cuộc thảo luận kỹ thuật thực tế.
1. Làm thế nào Docker cải thiện công việc phát triển?
Docker loại bỏ các điểm tương đồng môi trường bằng cách gói các quan hệ phụ thuộc chính xác của ứng dụng. Đội có thể chia sẻ một tập tin Docker hay một ảnh đã xây dựng sẵn, bảo đảm mỗi thành viên có cùng một chồng. Tính năng thống nhất này mở rộng tới các đường ống kiểu CN/CD: cùng một ảnh có thể được dùng để tạo ra mà không cần xây dựng lại. Hơn nữa, trình soạn thảo Docker cho phép xác định ứng dụng đa dịch vụ (v. d. một trình phục vụ Mạng, một cơ sở dữ liệu, một thông điệp, một hàng đợi, trong một tập tin cấu hình nền, tạo ra các dịch vụ vi mô tả.
Để biết thêm thông tin về Docker với CI/CD, xin xem [FLT: 0] hướng dẫn viên chính thức của Docker .
Khi dùng chim gõ kiến, bạn nên xem xét điều gì?
Vì các thùng chứa chung hạt nhân với máy, một container bị hỏng có thể ảnh hưởng đến máy. Các thực hành an ninh khóa bao gồm:
- Chạy với ít đặc quyền: tránh chạy các thùng chứa như người chủ. Hãy dùng chỉ thị trong Dockerfiles và cờ trong lúc chạy.
- Dùng hệ thống tập tin gốc chỉ đọc: để lắp hệ thống tập tin của container như chỉ đọc () và dùng tập hợp cho dữ liệu có khả năng ghi.
- Giữ ảnh cập nhật: [FLT: 0] thường xuyên quét ảnh cho khả năng sử dụng công cụ như Docker Scout hoặc Trivy.
- Dùng khoảng trống tên người dùng: [FLT: 1) remap container cho người dùng máy không phụ thuộc vào mục đích để hạn chế thiệt hại từ việc leo thang đặc quyền.
- Không có hộp chứa đặc quyền:) trừ khi hoàn toàn cần thiết (v. d., cho Docker-in-Docker), không cung cấp truy cập.
Từ chối OWAP Docker Security Sheet để kiểm tra toàn diện.
3. Làm thế nào để bạn làm báp têm cho ảnh có kích cỡ cao hơn?
Hình ảnh nhỏ hơn giảm thời gian chuyển giao, chi phí lưu trữ và bề mặt tấn công.
- Chọn những ảnh cơ bản mỏng: ảnh Alpine Linux khoảng 5 MB, so với 150+ MB cho Debian đầy đủ.
- Dùng các hệ thống phụ thuộc đa giai đoạn:[FLT: 1) riêng [FLT: 1] xây dựng quan hệ phụ thuộc (v. d., biên dịch viên, npm dev) từ ảnh chạy cuối cùng.
- Số đếm lớp:) kết hợp với và làm sạch bộ nhớ tạm gói trong cùng một lớp.
- Leverage ] ) Tập tin mở rộng như , bản ghi và nút modules không cần thiết trong ảnh.
- ) [thay vì chmd trong một lớp riêng để tránh một lớp khác.
Học thêm từ hướng dẫn thực hành tốt nhất .
4. Docker Mạng lưới hoạt động như thế nào?
Docker cung cấp một số trình điều khiển mạng để điều khiển giao tiếp công cụ:
- Bridge: Mặc định trình điều khiển. Các ngăn cản trên mạng cùng một mạng cầu có thể liên lạc qua địa chỉ IP. Bản đồ cổng ( để lộ các cổng container cho máy.
- Host:) Gỡ bỏ sự cô lập mạng — container dùng trực tiếp chồng mạng của máy. Có ích cho các dịch vụ nhạy cảm hiệu suất nhưng làm giảm an ninh.
- Dịch bởi Vũ Hạnh, Mai Linh, Nga, Nga, Huy Tô, Ann, Yuki, Ann, Phương The Vampire3X Subteam
- Macvlan: gán địa chỉ MAC cho mỗi container, làm cho chúng xuất hiện như các thiết bị vật lý trên mạng.
Đối với ứng dụng đa mạch, trình soạn thảo Docker tự động tạo một mạng cầu mặc định, cho phép dịch vụ giải quyết nhau bằng tên hộp.
5. Làm thế nào bạn có thể kiên trì trong việc ngăn chặn dữ liệu?
Theo mặc định, mọi dữ liệu được viết bên trong một container bị mất khi các container dừng lại. Để bền bỉ dữ liệu, Docker cung cấp tập và kết nối:
- Các kho:) được tài trợ bởi Docker, được cất giữ trong một thư mục dành riêng về máy (.
- Các gắn kết nóng:) Bản đồ một thư mục máy trực tiếp vào hộp. Có ích cho việc phát triển để nạp nhiệt, nhưng ít dễ dàng di chuyển.
Dùng cờ hoặc để gắn kết các tập tin. Để cơ sở dữ liệu, luôn luôn dùng âm lượng có tên để đảm bảo dữ liệu tồn tại khi khởi chạy lại container.
6. Nghệ thuật Docker là gì và khi nào bạn nên dùng nó?
Trình soạn thảo Docker là một công cụ cho việc xác định và chạy ứng dụng Docker đa mục. Bạn viết một tập tin chỉ định dịch vụ, mạng và tập tin. Với một lệnh (, tất cả các dịch vụ bắt đầu với nhau. Hãy sử dụng khả năng cấu hình cho phát triển, thử nghiệm và việc bật lên đơn giản không cần thiết thiết thiết thiết thiết thiết thiết thiết thiết thiết thiết thiết lập dàn nhạc.
Không nên dùng cụm sản xuất theo tỉ lệ — để xem xét trường hợp của ông Kubernetes hoặc Docker Swarm.
7. Docker liên quan thế nào đến Kubernetes?
Kubernetes là một nền tảng dàn nhạc để quản lý các thùng chứa thông qua một chùm máy. Trong khi Docker xử lý các công-te- container và chạy thời gian, Kubernetes tự động triển khai, phóng to, tải cân bằng, và tự chữa lành. Docker có thể được sử dụng như là công-ten-tatanh dưới thời Kubernetes, nhưng Kubernetes cũng hỗ trợ container và CRI-O. Các kỹ sư thường sử dụng chúng để xây dựng các hình ảnh Docker và sau đó triển khai chúng trên một cụm khăn ăn.
Để giới thiệu, xin xem Kubernets .
Kết luận
Sự ngăn chặn với Docker đã trở thành một kỹ năng thiết yếu cho các kỹ sư phần mềm, giúp tăng độ phát triển, tăng độ nhất quán, và tạo ra các dịch vụ vi mô có thể tăng cường, bằng cách điều khiển các khái niệm cốt lõi như hình ảnh, hộp chứa, mạng lưới và dữ liệu — và theo dõi các thực hành an ninh và tối ưu hóa, các kỹ sư có thể xây dựng và duy trì các hệ thống sản xuất mạnh mẽ.