Chia sẻ
//Mẹo Build Docker Images

Mẹo Build Docker Images

Docker là một nền tảng ảo hóa cấp phép mã nguồn mở, giúp bạn xây dựng, triển khai và quản lý ứng dụng một cách linh hoạt và hiệu quả trên nhiều môi trường khác nhau. Với Docker, bạn có thể đóng gói tất cả các thành phần cần thiết của ứng dụng, bao gồm mã nguồn, thư viện, biến môi trường và cấu hình vào một container độc lập.

Tuy nhiên, việc build một ứng dụng gọn nhẹ cũng cần vài thủ thuật sau đây:

SỬ DỤNG OFFICIAL IMAGES

Với độ phổ biến của Docker như hiện nay thì rất nhiều hãng phần mềm đều có image riêng của mình. Việc sử dụng những official images giúp chúng ta:

  • Dockerfile gọn gàng hơn
  • Bản build của chúng ta ổn định hơn (Các hãng đã test trước khi release)
  • Images build ra có dung lượng nhỏ hơn (Các hãng đã tối ưu trước)

TRÁNH SỬ DỤNG LATEST IMAGES

Khi các hãng phần mềm release version mới thì đều thêm tính năng mới và xoá tính năng cũ, vì vậy nếu chúng ta sử dụng images latest thì sẽ có khả năng hệ thống trở nên không còn ổn định mỗi khi build images.

CHỌN IMAGE ALPINE

Tôn chỉ của Alpine Linux là nhỏ, đơn giản và bảo mật, những hãng phần mềm cũng không quên cung cấp những image được build từ Alpine Linux. Các image Alpine cung cấp những tính năng cần thiết để hệ thống chúng ta chạy ổn định.

Điểm cần lưu lý khi dùng những image Alpine là thiếu thư viện. Cái này nằm ở tính nhỏ gọn của nó, các nhà sản xuất chỉ cung cấp những thư viện cần thiết nhất thôi.

Ngoài Apline ra thì Docker Images Slim hay Docker Cloud cũng là những lựa chọn tốt, tùy theo từng trường hợp.

TẬN DỤNG LAYER CACHING

Khi làm việc với Docker thì việc rebuild image xảy ra rất thường xuyên, từ việc xây dựng một images tối ưu hay cập nhật những thư viện không còn tồn tại, đến việc release sử dụng quy trình CI/CD. Để tránh mất thời gian do phải chạy lại toàn bộ file Dockerfile thì Docker cung cấp tính năng Layer Caching.

Khi tiến hành build image thì Docker sẽ kiểm tra bản build trước đó, nếu như layer không thay đổi gì cả thì Docker sẽ layer từ cache luôn mà không cần phải build lại. Khi có một layer thay đổi thì kể từ layer đó trở về sau thì Docker sẽ tiến hành build.

Với cách build trên chỉ cần có file thay đổi trong project thì lệnh composer install sẽ phải chạy lại.

Do 2 files composer.json và composer.lock ít thay đổi nên chúng ta có thể tận dụng việc install các packages từ những bản build trước.

Khi làm việc với layer thì ưu tiên những lệnh build ít thay đổi ở trên (cài packages, composer, node, …), những lệnh build thay đổi thường xuyên sẽ ở dưới.

GIẢM BỚT SỐ LƯỢNG LAYER

Để xác định dung lượng docker image thì ngoài những packages mà chúng ta cài đặt thì số lượng layer cũng làm tăng dung lượng của images, càng nhiều layer thì dung lượng image càng tăng. Có 3 câu lệnh mà sẽ tạo ra layer là RUN, COPYADD.

Lời khuyên là sử dụng && để gom các câu lệnh lại thành một, nhằm giảm bớt số layer.

Như ví dụ trên thì thay vì phải tạo ra 9 layer thì sử dụng && giúp giảm thiểu số lượng layer được tạo ra. Tưởng tượng với hệ thống phức tạp thì giảm số lượng layer sẽ giảm đáng kể dung lượng image.

Cái khuyết điểm của việc gom các câu lệnh chính là mất đi tính năng Layer Caching, chỉ cần có sự thay đổi nhỏ cũng phải build lại cho dù muốn hay không. Cho nên việc thêm hay bớt layer cũng nên cân nhắc và tính toán cẩn thận.

KẾT LUẬN

Có một image nhỏ gọn sẽ giúp việc triển khai hệ thống nhanh hơn, cải thiện thời gian khởi động hệ thống, giảm thiểu lỗ hổng bảo mật. Việc tối ưu Docker image cần chúng ta đầu tư thời gian và công sức nhiều hơn nhưng những lợi ích nó mang lại thì không có gì để bàn cãi.

Vũ Khắc Nguyễn
Web Developer

ỨNG TUYỂN







    Chế độ phúc lợi

    CHÍNH SÁCH LƯƠNG & THƯỞNG

    Thấu hiểu tâm tư nguyện vọng của nhân viên, công ty Rivercrane Việt Nam đặc biệt thiết lập chế độ xét tăng lương định kỳ 2lần/năm. Xét đánh giá vào tháng 06 và tháng 12 hàng năm và thay đổi lương vào tháng 01 và tháng 07 hàng năm. Ngoài ra, nhân viên còn được thưởng thành tích định kỳ cho các cá nhân xuất sắc trong tháng, năm.

    CHẾ ĐỘ ĐÀO TẠO TẠI NHẬT

    Luôn luôn mong muốn các kỹ sư và nhân viên trong công ty có cái nhìn toàn diện về lập trình những mảng kỹ thuật trên thế giới, công ty Rivercrane Việt Nam quyết định chế độ 3 tháng 1 lần đưa nhân viên đi học tập tại Nhật. Các bạn kỹ sư hoàn toàn đều có thể quyết định khả năng phát triển bản thân theo hướng kỹ thuật hoặc theo hướng quản lý.

    CHẾ ĐỘ ĐI DU LỊCH HÀNG NĂM

    Không chỉ đưa đến cho nhân viên những công việc thử thách thể hiện bản thân, công ty Rivercrane Việt Nam muốn nhân viên luôn thích thú khi đến với những chuyến hành trình thú vị hàng năm. Những buổi tiệc Gala Dinner sôi động cùng với những trò chơi Team Building vui nhộn sẽ giúp cho đại gia đình Rivercrane thân thiết hơn.

    CHẾ ĐỘ EVENT CÔNG TY

    Những hoạt động Team building, Company Building, Family Building, Summer Holiday, Mid-Autumn Festival… sẽ là những khoảnh khắc gắn kết đáng nhớ của mỗi một nhân viên trong từng dự án, hoặc sẽ là những điều tự hào khi giới thiệu công ty mình với với gia đình thân thương, cùng nhau chia sẻ yêu thương với thông điệp “We are One”

    BẢO HIỂM

    Công ty Rivercrane Việt Nam đảm bảo tham gia đầy đủ chế độ Bảo hiểm xã hội, bảo hiểm y tế và bảo hiểm thất nghiệp. Cam kết chặt chẽ về mọi thủ tục phát sinh công ty đều hỗ trợ và tiến hành cho nhân viên từ đầu đến cuối. Những chế độ bảo hiểm khác công ty cũng đặc biệt quan tâm và từng bước tiến hành.

    CHẾ ĐỘ PHÚC LỢI KHÁC

    Hỗ trợ kinh phí cho các hoạt động văn hóa, văn nghệ, thể thao; Hỗ trợ kinh phí cho việc mua sách nghiên cứu kỹ thuật; Hỗ trợ kinh phí thi cử bằng cấp kỹ sư, bằng cấp dành cho ngôn ngữ. Hỗ trợ kinh phí tham gia các lớp học về quản lý kỹ thuật bên ngoài; Các hỗ trợ phúc lợi khác theo quy định công ty…

    © 2012 RiverCrane Vietnam. All rights reserved.

    Close