Tôi đã từng dành nhiều thời gian để khắc phục sự cố các hình ảnh Docker lớn, chờ quá trình xây dựng hoàn tất và lo lắng về việc lãng phí dung lượng. Có cảm giác như cho dù tôi có cấu trúc Dockerfiles của mình cẩn thận đến đâu thì hình ảnh vẫn luôn nặng hơn mức cần thiết. Tất cả đã thay đổi khi tôi phát hiện ra SlimToolkit (trước đây gọi là DockerSlim).
Công cụ này phân tích hình ảnh Docker, xác định tệp và phần phụ thuộc nào thực sự cần thiết trong thời gian chạy và xóa mọi thứ khác. Hãy làm theo hướng dẫn này để biết cách SlimToolkit hoạt động và các bước tôi đã sử dụng để thu nhỏ hình ảnh Docker của mình mà không làm hỏng bất kỳ thứ gì.
Mục lục
SlimToolkit Đơn giản hóa việc tối ưu hóa hình ảnh Docker
Bộ công cụ SlimTool là một công cụ nguồn mở giúp giảm kích thước hình ảnh Docker mà không yêu cầu thay đổi mã ứng dụng hoặc Dockerfiles. Nó loại bỏ sự cần thiết của các bước tối ưu hóa thủ công, chẳng hạn như dọn dẹp các gói hoặc viết lại các giai đoạn xây dựng. Thay vào đó, SlimToolkit tự động xử lý tối ưu hóa hình ảnh và giữ cho quy trình trở nên đơn giản.
Khi bạn chạy SlimToolkit trên hình ảnh Docker, nó sẽ thực hiện phân tích động bằng cách xem cách vùng chứa chạy. Nó theo dõi chính xác những tập tin, thư viện và phần phụ thuộc nào mà ứng dụng chạm vào trong quá trình thực thi. Dựa trên dữ liệu này, nó tạo ra một hình ảnh mới, được tối ưu hóa chỉ chứa các thành phần cần thiết. Nó giữ nguyên hình ảnh gốc, giúp quá trình đảo ngược trở nên an toàn và dễ dàng.
SlimToolkit hoạt động với các hình ảnh hiện có và hỗ trợ Node.js, Python, Java và Go mà không yêu cầu kiến thức nâng cao về Docker hoặc Linux. Nó tích hợp hoàn toàn vào hầu hết các quy trình công việc, cải thiện tính bảo mật của vùng chứa bằng cách loại bỏ các công cụ và shell không sử dụng mà kẻ tấn công có thể khai thác. Hình ảnh nhỏ hơn tải xuống nhanh hơn, khởi động nhanh hơn và tiêu tốn ít tài nguyên hơn. Đây là một lợi thế lớn cho quy trình CI/CD.
Sử dụng SlimToolkit qua Docker là phương pháp dễ nhất vì nó không yêu cầu cài đặt cục bộ. Chỉ cần Docker được cài đặt và chạy, bạn có thể bắt đầu sử dụng SlimToolkit ngay.
Trước tiên, hãy tải xuống hình ảnh SlimToolkit chính thức bằng lệnh docker sau:
docker pull dslim/slim
Chạy SlimToolkit yêu cầu gắn ổ cắm Docker (/var/run/docker.sock). Điều này cho phép vùng chứa giao tiếp với công cụ Docker cục bộ của bạn để phân tích và tối ưu hóa hình ảnh. Đảm bảo bạn chỉ sử dụng hình ảnh chính thức đáng tin cậy.
Giảm kích thước hình ảnh Docker bằng SlimToolkit
Để minh họa quá trình tối ưu hóa, chúng tôi sẽ làm mỏng hình ảnh Nginx tiêu chuẩn. Đầu tiên, kéo hình ảnh Nginx chính thức, mới nhất:
docker pull nginx:latest
Đối với các ứng dụng tiêu chuẩn như Nginx, bạn có thể chạy lệnh build trực tiếp. SlimToolkit kiểm tra những tập tin mà vùng chứa thực sự sử dụng và xóa những tập tin không cần thiết.
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock dslim/slim build --target nginx:latest --tag nginx-slim:latest
Một số ngôn ngữ (như Python hoặc Ruby) có thể có các phần phụ thuộc không được kích hoạt ngay lập tức trong quá trình thăm dò tiêu chuẩn. Trong những trường hợp đó, hãy tạo tệp “ignore.txt” để cho SlimToolkit biết những thư mục nào cần giữ lại, chẳng hạn như “/usr/local/lib/python3.11”. Điều này ngăn SlimToolkit loại bỏ các phần phụ thuộc thiết yếu trong thời gian chạy.
Bạn có thể chạy lệnh với giá treo âm lượng để bao gồm các quy tắc lưu giữ của mình:
-v "$(pwd)":/target --preserve-path-file /target/ignore.txt So sánh sự khác biệt về kích thước:Bản gốc và bản gốc. Hình ảnh được làm mỏng
Sau khi quá trình kết thúc, SlimToolkit sẽ lưu cục bộ hình ảnh được tối ưu hóa. Bạn có thể so sánh sự khác biệt về kích thước giữa phiên bản gốc và phiên bản rút gọn bằng lệnh này:
docker images Bạn có thể sẽ thấy mức giảm đáng kể.
Cuối cùng, hãy kiểm tra hình ảnh được tối ưu hóa mới của bạn để đảm bảo nó hoạt động như mong đợi:
docker run -it -p 8080:80 nginx-slim:latest
Mở trình duyệt của bạn và điều hướng đến http://localhost:8080. Bạn sẽ thấy trang chào mừng Nginx mặc định, nhưng chạy từ vùng chứa nhỏ hơn đáng kể.
SlimToolkit cung cấp một số lệnh chính để giúp bạn phân tích và tối ưu hóa hình ảnh Docker. Dưới đây là danh sách những thứ hữu ích nhất:
Bạn cũng có thể kiểm tra tất cả các lệnh SlimToolkit có sẵn và cách sử dụng chúng bằng lệnh sau.
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock dslim/slim slim help
Những hạn chế cần lưu ý
Mặc dù SlimToolkit giúp giảm kích thước hình ảnh Docker nhưng bạn nên cân nhắc một số nhược điểm:
- Việc thu nhỏ hình ảnh lớn có thể mất nhiều thời gian hơn, vì vậy hãy lập kế hoạch cho phù hợp.
- Vì công cụ này sử dụng phân tích động nên nếu một đường dẫn mã cụ thể không được thực thi trong quá trình xây dựng, SlimToolkit có thể cho rằng một phần phụ thuộc không được sử dụng và xóa nó. Luôn kiểm tra kỹ hình ảnh đã được thu gọn của bạn.
- Nó thường loại bỏ các công cụ như bash hoặc Curl để tiết kiệm dung lượng. Nếu bạn cần những thứ này để khắc phục sự cố bên trong vùng chứa sản xuất, bạn phải yêu cầu SlimToolkit giữ chúng một cách rõ ràng.
Kết thúc
Việc thêm SlimToolkit vào quy trình làm việc của bạn sẽ tăng tốc quá trình triển khai, đảm bảo hiệu suất ổn định và giảm thiểu sự phình to của vùng chứa. Nó giúp bạn xây dựng hình ảnh Docker sạch hơn và chuyên nghiệp hơn trong khi vẫn giữ nguyên các bản dựng ban đầu của bạn. Ngoài ra, việc áp dụng các phương pháp dọn dẹp Docker tốt nhất giúp duy trì các vùng chứa hiệu quả, được tổ chức tốt theo thời gian.