Share This
//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

APPLY NOW






    Benefits

    SALARY & BONUS POLICY

    RiverCrane Vietnam sympathizes staffs' innermost feelings and desires and set up termly salary review policy. Performance evaluation is conducted in June and December and salary change is conducted in January and July every year. Besides, outstanding staffs receive bonus for their achievements periodically (monthly, yearly).

    TRAINING IN JAPAN

    In order to broaden staffs' view about technologies over the world, RiverCrane Vietnam set up policy to send staffs to Japan for study. Moreover, the engineers can develop their career paths in technical or management fields.

    ANNUAL COMPANY TRIP

    Not only bringing chances to the staffs for their challenging, Rivercrane Vietnam also excites them with interesting annual trips. Exciting Gala Dinner with team building games will make the members of Rivercrane connected closer.

    COMPANY'S EVENTS

    Activities such as Team Building, Company Building, Family Building, Summer Holiday, Mid-Autum Festival, etc. will be the moments worthy of remembrance for each individual in the project or the pride when one introduces the company to his or her family, and shares the message "We are One".

    INSURANCE

    Rivercrane Vietnam ensures social insurance, medical insurance and unemployment insurance for staffs. The company commits to support staffs for any procedures regarding these insurances. In addition, other insurance policies are taken into consideration and under review.

    OTHER BENEFITS

    Support budget for activities related to education, entertainment and sports. Support fee for purchasing technical books. Support fee for getting engineering or language certificates. Support fee for joining courses regarding technical management. Other supports following company's policy, etc.

    © 2012 RiverCrane Vietnam. All rights reserved.

    Close