シェア
//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

今すぐ応募







    福利厚生

    給料・ボーナス制度

    社員の感情・願望を理解しているので、リバークレーンベトナムは特に年2回の定期昇給制度を設けています。毎年6月と12月に評価を行い、毎年1月と7月に給与が変更されます。また、社員は月次と年次の優秀な個人には定期的な業績賞与が別で支給されます。

    日本研修制度

    世界中の新しい技術分野に触れるために、社員を日本にオンサイトさせる方針があります。さらに、技術分野か管理分野かのキャリアパスは社員の決定次第です。

    毎年社員旅行

    リバークレイン・ベトナムは、スタッフに挑戦の機会を提供するだけでなく、年に一度の魅力的な旅行で彼らを楽しませています。エキサイティングなガラディナーやチームビルディングゲームは、リバークレインのメンバー同士の絆をさらに深める手助けをします。

    リバークレイン イベント

    チームビルディング・ファミリーデー・お夏休み・中秋節などのイベントはチーム内のメンバーが接続出来るしお互いに自分のことを共有出来る機会です。ご家族員に連携する際にはそれも誇りに言われています。

    社会保険制度

    リバークレーンベトナムは従業員に社会保険、医療保険、失業手当などの社会保険制度があります。当社は、これらの保険に関するあらゆる手続きをスタッフに必ずサポートしています。さらに、他の保険契約も考慮され、検討されています。

    他福利

    社員向けの活動をサポートすることもあります。 ・文化・芸術・スポーツクラブの運営費用 ・技術研究の教科書を購入する金額 ・エンジニア試験・言語能力試験を受験料 ・ソフトスキルのセミナー・コースの参加費 ・等 また会社政策通り、他のベネフィットもあります。

    © 2012 RiverCrane Vietnam. All rights reserved.

    Close