Gặp gỡ Nguyễn Thế Thành – Chuyên gia đạt top 1 Dockerfile Contest 2025 dự án Python

Sự kiện Dockerfile Contest 2025 do DevOps VietNam tổ chức đã khép lại với những màn trình diễn kỹ thuật ấn tượng, đặc biệt là ở hạng mục Python Containerization. Cuộc thi đã chứng kiến những nỗ lực đáng ngưỡng mộ trong việc tinh chỉnh Dockerfile để đạt được sự tối ưu tuyệt đối về hiệu suất và bảo mật.

Chúng tôi hân hạnh có cuộc phỏng vấn độc quyền với anh Nguyễn Thế Thành, người đã xuất sắc giành vị trí TOP 1 PYTHON. Giải pháp của anh Thành là sự kết hợp nhuần nhuyễn giữa các công cụ hiện đại như uv và kiến trúc bảo mật cấp tiến như Distroless, đặt ra chuẩn mực mới cho việc triển khai ứng dụng Python trong môi trường cloud. Hãy cùng lắng nghe những chia sẻ sâu sắc từ chuyên gia về hành trình chinh phục thử thách này.

8982d6c9-e17d-4062-b81f-c4149676241f

Xin chúc mừng anh Thành. Anh có thể chia sẻ đôi nét về cơ duyên đến với lĩnh vực DevOps/Containerization và động lực nào đã thúc đẩy Anh tham gia Dockerfile Contest 2025?

Mình học chuyên ngành an toàn thông tin, tuy nhiên sau khi tốt nghiệp thì mình chưa có duyên với chuyên ngành này. Lúc đó, mình nghĩ rằng mình cần chọn một lĩnh vực khác trend hơn mà vẫn có thể làm về an toàn thông tin sau này, và DevOps là sự lựa chọn hoàn hảo. Thật may mắn khi công việc hiện tại của mình có xu hướng thiên về DevSecOps nữa rồi.

Mình rất thích tìm hiểu kiến thức về công nghệ. Ngay từ khoảnh khắc nhìn thấy thông tin về sự kiện Dockerfile Contest 2025 trên trang web devops.vn, mình đã nghĩ tới vị trí TOP 1 rồi. Mình dành thời gian mỗi ngày để nghĩ cách tối ưu Dockerfile, bên cạnh đó, việc lọt top có thể sẽ khiến cho những dự án cá nhân của mình trở nên thuận lợi hơn. Tham gia sự kiện cũng là cách để mình giao lưu, học hỏi với rất nhiều người khác. Đây thực sự là một mũi tên trúng nhiều đích.

Dockerfile chiến thắng của Anh đã thể hiện sự tối ưu tuyệt đối về tốc độ build nhờ uv và kích thước/bảo mật nhờ Distroless. Khi bắt đầu dự án này, Anh đã ưu tiên yếu tố nào hơn? Và triết lý chung của Anh là gì khi phải cân bằng giữa Tốc độ build và Bảo mật runtime?

Khi bắt đầu dự án, mình sẽ ưu tiên tốc độ build trước để hiểu ứng dụng hơn, sau đó mình sẽ ưu tiên tốc độ và bảo mật ngang nhau. Mình dùng Stage đầu tiên để thử nghiệm, kiểm tra các thư viện phụ thuộc. Stage thứ hai sẽ tiến hành tối ưu kích thước cũng như bảo mật. Một image tối ưu, chỉ chứa những thứ thực sự cần thiết không những làm kích thước image nhỏ hơn mà còn làm cho image đó bảo mật hơn.

Với mình, tốc độ và bảo mật không phải là sự đánh đổi, mà là bổ sung cho nhau khi được thực hiện đúng cách. Ví dụ như Multi-Stage Build, tách biệt môi trường build và môi trường runtime, giúp Image cuối cùng cực kỳ nhỏ và build lại nhanh hơn khi chỉ có mã nguồn thay đổi. Bên cạnh đó, việc lựa chọn base image tối thiểu giúp thời gian pull/push nhanh hơn, từ đó tốc độ build và triển khai cũng sẽ nhanh hơn.

Việc lựa chọn uv thay vì pip truyền thống là một quyết định rất hiện đại. Lợi ích then chốt nào của uv khiến nó trở thành lựa chọn không thể thay thế cho việc tối ưu tốc độ build trong môi trường Docker, và Anh đã tận dụng các tính năng nâng cao như mount cache/bind của nó như thế nào?

uv quản lý một thư mục cache cục bộ cho các gói Python đã tải về. Bằng cách mount thư mục cache này vào quá trình build, Docker có thể tái sử dụng các gói đã tải xuống từ các lần build trước.

Lợi ích then chốt là Cache Mounts hoạt động độc lập với các layer Docker thông thường. Điều này có nghĩa là ngay cả khi thay đổi các lệnh trước đó trong Dockerfile, Cache Mount vẫn có thể được sử dụng. Mình sử dụng type=cache để tăng tốc độ build lặp lại, và type=bind để mount file hoặc binary cần thiết cho quá trình build vào base image mà không cần copy.

Phần độc đáo nhất là kỹ thuật tối ưu thư viện chia sẻ (shared libraries) để chạy ứng dụng Python trên Distroless một Base Image cực kỳ an toàn. Anh có thể giải thích tư duy cốt lõi đằng sau việc tạo thư mục /lib/multi-arch và copy thủ công các thư viện? Nó đã giải quyết vấn đề gì và đạt được hiệu quả về kích thước/bảo mật như thế nào?

Tư duy cốt lõi của việc tạo thư mục /lib/multi-arch là để đơn giản hoá việc build multi-arch mà không cần truyền giá trị cho ARG khi chạy build và chỉ cần một câu lệnh build cho multi-arch thôi. Biến TARGETARCH sẽ tự động nhận các giá trị amd64 hoặc arm64 với kiến trúc tương ứng.

Rất tiếc là tên thư mục chứa shared libraries mặc định không có format phù hợp (/lib/x86_64-linux-gnu hoặc /lib/aarch64-linux-gnu) và trong Distroless cũng không có shell để dùng lệnh RUN if/else. Việc tạo ra thư mục mới và nói với hệ thống là mình lưu shared libraries trong đó là cách xử lý tốt nhất. Việc chủ động xác định và chỉ copy những thư viện cần thiết thay vì copy cả thư mục giúp image của mình nhỏ hơn, tối ưu hơn.

Anh đã có sự chủ động đáng ngưỡng mộ trong việc xử lý lỗ hổng bảo mật (CVE) và chuẩn bị cho việc build đa kiến trúc (TARGETARCH). Lời khuyên của Anh dành cho cộng đồng là gì để luôn duy trì Docker Image an toàn và sẵn sàng cho các môi trường triển khai đa nền tảng?

Lời khuyên của mình là hãy xem xét Bảo mật là một phần của tốc độ và quy trình. Bằng cách tự động hóa kiểm tra bảo mật ở giai đoạn build, tận dụng built-in variable hiệu quả, bạn sẽ có được những Image vừa an toàn, vừa linh hoạt, và có thể triển khai nhanh chóng.

Anh muốn nhắn nhủ điều gì đến các bạn trẻ đang làm DevOps? Và sau giải thưởng này, tầm nhìn của Anh về tương lai của Python Containerization và các công cụ DevOps tiếp theo mà Anh đang quan tâm là gì?

Lời nhắn nhủ chính của mình dành cho các bạn trẻ đang làm DevOps là: Đừng chỉ làm theo quy trình, hãy cố gắng hiểu rõ bản chất của vấn đề, công cụ. DevOps hay DevSecOps là tư duy, không phải công cụ.

Mình đang quan tâm đến AI Agent và Security. Mình nghĩ AI Agent sẽ rất bùng nổ trong những năm tới khi mà LLM đã phát triển đến mức không tưởng. Khi ứng dụng thành công AI Agent vào DevSecOps, mọi thứ sẽ được nâng lên tầm cao mới.

019ab6de-b824-7087-9db6-2dbcb128d0dd

Chiến thắng của anh Nguyễn Thế Thành đã minh chứng cho sức mạnh của việc kết hợp các kỹ thuật tối ưu hóa hiện đại: từ việc sử dụng uv để tăng tốc độ build lặp lại, áp dụng kiến trúc Distroless cho bảo mật runtime, đến việc tối ưu hóa thư viện chia sẻ để đảm bảo khả năng Multi-Arch một cách tinh gọn.

Giải pháp đạt TOP 1 PYTHON của anh Thành không chỉ là một thành tích cá nhân mà còn là một bài học thực tiễn quý giá, cung cấp mô hình lý tưởng cho bất kỳ tổ chức nào đang tìm cách triển khai các ứng dụng Python an toàn, hiệu quả và linh hoạt trong môi trường CI/CD hiện đại.

Chúng tôi xin chân thành cảm ơn anh Nguyễn Thế Thành đã dành thời gian chia sẻ và chúc anh tiếp tục gặt hái nhiều thành công hơn nữa trong tương lai.

Tham khảo chi tiết Dockerfile của anh Thành tại: Dockerfile Contest 2025

Thông tin đáng chú ý

Sự kiện phát trực tiếp

Event Thumbnail
Chia sẻ bài viết:
Theo dõi
Thông báo của
0 Góp ý
Được bỏ phiếu nhiều nhất
Mới nhất Cũ nhất
Phản hồi nội tuyến
Xem tất cả bình luận