paint-brush
Làm cách nào để loại bỏ Pound khỏi hình ảnh Docker của bạn?by@infinity
2,195
2,195

Làm cách nào để loại bỏ Pound khỏi hình ảnh Docker của bạn?

Rishabh Agarwal4m2024/01/19
Read on Terminal Reader
Read this story w/o Javascript

Containerization là một quy trình triển khai phần mềm kết hợp mã của ứng dụng với tất cả các tệp và thư viện mà nó cần để chạy trên bất kỳ cơ sở hạ tầng nào. Bằng cách tối ưu hóa hình ảnh Docker, bạn có thể đẩy nhanh chu trình phát triển tổng thể nhưng cũng tăng cường các biện pháp bảo mật hiện có, đảm bảo môi trường phần mềm mạnh mẽ và hiệu quả hơn.
featured image - Làm cách nào để loại bỏ Pound khỏi hình ảnh Docker của bạn?
Rishabh Agarwal HackerNoon profile picture

Containerization ”, người quản lý của tôi nói một cách dứt khoát khi tôi hỏi anh ấy về điều duy nhất đã cách mạng hóa ngành Phát triển phần mềm. Ông lập luận rằng nếu không có container, việc mở rộng quy mô nhanh chóng và triển khai toàn cầu của phần mềm ngày nay sẽ là một thách thức ghê gớm hơn nhiều. Điều đáng chú ý là gần như tất cả phần mềm được sử dụng ngày nay đều tận dụng khả năng chứa trong nhiều khả năng khác nhau, nhấn mạnh vai trò không thể thiếu của nó trong việc cung cấp năng lượng cho hệ sinh thái phần mềm hiện đại!


Dành cho những bạn chưa biết thì đây là định nghĩa từ trang web của AWS ~

 *“Containerisation is a software deployment process that bundles an application's code with all the files and libraries it needs to run on any infrastructure. Traditionally, to run any application on your computer, you had to install the version that matched your machine's operating system.”*


Hình ảnh đóng vai trò là khối xây dựng cho các thùng chứa, giống như các bản thiết kế hướng dẫn việc tạo ra chúng. Do đó, việc duy trì hình ảnh vùng chứa nhẹ và được sắp xếp hợp lý sẽ đẩy nhanh quá trình triển khai và tạo điều kiện thuận lợi cho việc phân phối những hình ảnh này. Bằng cách tối ưu hóa hình ảnh Docker, bạn không chỉ có thể đẩy nhanh chu trình phát triển tổng thể mà còn tăng cường các biện pháp bảo mật tại chỗ, đảm bảo môi trường phần mềm mạnh mẽ và hiệu quả hơn.


Trong bài viết này, chúng ta sẽ khám phá các phương pháp khác nhau để tạo hình ảnh Docker hiệu quả, cuối cùng là nâng cao hiệu quả cho ứng dụng của bạn.

Gói ứng dụng duy nhất cho mỗi container

Một lỗi phổ biến là xử lý vùng chứa như Máy ảo (VM) và đóng gói nhiều ứng dụng bên trong một vùng chứa. Trong khi tăng kích thước vùng chứa của bạn, cách làm này cũng có những nhược điểm khác.


Một vùng chứa được dự đoán là có tuổi thọ liên quan chặt chẽ đến ứng dụng mà nó đang chạy. Vùng chứa sẽ bắt đầu khi ứng dụng khởi động và dừng khi ứng dụng kết thúc. Các giải pháp điều phối vùng chứa như Docker và Kubernetes phụ thuộc đáng kể vào thuộc tính này của vùng chứa. Nếu một vùng chứa đang chạy nhiều ứng dụng thì các công cụ điều phối sẽ không thể xác định và khởi động lại ứng dụng của bạn!

Sử dụng bộ nhớ đệm một cách thông minh

Hình ảnh bao gồm các lớp và mỗi hướng dẫn trong Dockerfile của bạn sẽ thêm một lớp mới. Các công nghệ container hóa, chẳng hạn như Docker, sẽ cố gắng sử dụng lại các lớp từ các bản dựng trước bất cứ khi nào có thể để giảm thời gian xây dựng. Bộ đệm cho một lớp chỉ có thể được sử dụng nếu không có lớp bên dưới nào thay đổi kể từ các bản dựng trước.


Để nâng cao tốc độ xây dựng hình ảnh, sẽ rất hữu ích khi đặt các hướng dẫn có thể thường xuyên thay đổi bên dưới trong Dockerfile của bạn. Cách tiếp cận này cho phép Docker tận dụng hệ thống bộ nhớ đệm của mình hiệu quả hơn. Ví dụ: vì mã nguồn thường xuyên thay đổi nên bạn nên sao chép nó vào hình ảnh ở cuối quá trình.


Bộ nhớ đệm hình ảnh ~ https://cloud.google.com/architecture/best-practices-for-building-containers


Mặc dù nó không làm cho hình ảnh của bạn nhẹ hơn nhưng nó giúp quá trình xây dựng diễn ra nhanh chóng!

Loại bỏ các công cụ không cần thiết

Thông thường, hình ảnh vùng chứa bao gồm các công cụ không cần thiết, dẫn đến hình ảnh phình to và các lỗ hổng bảo mật tiềm ẩn. Ví dụ: các công cụ như netcat có thể bị tin tặc khai thác để thực hiện các hoạt động độc hại trong vùng chứa của bạn nếu chúng có được quyền truy cập trái phép.


Việc duy trì nghiêm ngặt bộ công cụ và thư viện đi kèm với hình ảnh vùng chứa của bạn có thể giúp ích đáng kể trong việc giảm các mối đe dọa bảo mật và cũng sẽ mang lại hình ảnh mỏng hơn. Hình ảnh nhỏ hơn tải xuống nhanh hơn, nghĩa là vùng chứa khởi động nhanh hơn.

Sử dụng hình ảnh cơ sở nhỏ nhất

Hình ảnh mà chúng ta tham chiếu trong lệnh FROM được gọi là hình ảnh cơ sở. Hình ảnh cơ sở quyết định rất lớn đến kích thước của hình ảnh cuối cùng được tạo ra. Chúng ta nên cố gắng sử dụng hình ảnh cơ sở nhỏ nhất có thể để giảm kích thước cuối cùng của hình ảnh.


Cố gắng sử dụng hình ảnh núi cao bất cứ khi nào có thể vì chúng có kích thước nhỏ hơn và thường chứa đủ công cụ để hỗ trợ hoạt động phát triển.


Ngay cả khi một hình ảnh nhỏ không chứa tất cả các công cụ mà bạn yêu cầu, việc sử dụng nó vẫn có thể là một lựa chọn tốt hơn. Việc cài đặt các gói mà bạn yêu cầu trên hình ảnh cơ sở nhẹ hơn vẫn có thể giúp tiết kiệm hơn khi sử dụng hình ảnh nặng hơn.

Chỉ sao chép những gì cần thiết!

Trong khi sao chép mã nguồn, nhiều tệp và thư mục không mong muốn cũng có thể bị sao chép sang. Điều này làm tăng kích thước hình ảnh của bạn và cuối cùng dẫn đến đầy hơi. Cố gắng giảm thiểu số lượng tệp được sao chép và cố gắng giữ chúng ở mức tối thiểu.


Tầm quan trọng của việc tối ưu hóa hình ảnh vùng chứa và thiết lập các phương pháp hay nhất thường bị bỏ qua trong ngành của chúng tôi. Tuy nhiên, những lợi ích đáng kể phát sinh từ việc tuân thủ các thực hành này không thể bị phóng đại. Với tư cách là nhà phát triển, điều cần thiết là phải luôn ưu tiên việc tạo hình ảnh vùng chứa mỏng và nhanh.


Với điều đó chúng ta đi đến cuối bài viết này. Hy vọng bạn thích đọc nó!