Làm Thế Nào Để Tạo Docker Image Cross-Platform Với Buildx Và Colima

Nội dung

Hello, các bạn! Hôm nay mình muốn chia sẻ một chút kinh nghiệm và mẹo nhỏ về cách mà mình đã sử dụng BuildxColima để tạo ra những image container cross-platform một cách dễ dàng. Nếu bạn cũng đang loay hoay không biết làm sao để hỗ trợ nhiều kiến trúc phần cứng khác nhau thì bài viết này sẽ là cứu tinh cho bạn đấy!

Tại Sao Lại Dùng Buildx Và Colima?

Khi làm việc với Docker, mình thường gặp phải vấn đề khi cần build image cho các kiến trúc khác nhau (VD: amd64, arm64,…). Đó là lúc mình biết đến Buildx, một công cụ cực kỳ hữu ích của Docker giúp bạn có thể build image cho nhiều nền tảng mà không cần phải sở hữu phần cứng đặc thù. Còn Colima lại là một ứng dụng nhẹ nhàng giúp bạn chạy Docker trên macOS với hiệu năng tốt hơn, mà không cần phải cài đặt nặng nề gì.

Ví dụ cụ thể: Mình có một ứng dụng Node.js chạy trên máy tính Mac (chip arm64). Thông thường, nếu build thẳng từ đây, image chỉ hỗ trợ cho kiến trúc arm64, nhưng mình lại cần deploy lên một máy chủ sử dụng chip amd64. Thay vì phải chuyển đổi thủ công, mình có thể sử dụng Buildx để tạo ra một image đa nền tảng trong một nốt nhạc!

Setup Colima Để Chạy Docker

Đầu tiên, hãy setup Colima trên máy của bạn nhé. Đối với những bạn dùng macOS như mình, Colima chính là một lựa chọn tuyệt vời. Chỉ cần một vài dòng lệnh thôi là bạn đã có thể sử dụng được rồi.

brew install colima
colima start

Để xác định colima đã chạy đúng chưa bạn chạy lệnh:

colima status

Kết quả trả về là:

INFO[0000] colima is running using QEMU                 
INFO[0000] arch: aarch64                                
INFO[0000] runtime: docker                              
INFO[0000] mountType: sshfs                             
INFO[0000] socket: unix:///Users/anthony/.colima/default/docker.sock
colima status

Voila! Docker đã sẵn sàng để bạn sử dụng rồi đó.

Cài Đặt Và Cấu Hình Buildx

Giờ thì hãy đến với Buildx. Nếu bạn chưa cài đặt nó, chỉ cần chạy lệnh sau để thêm plugin Buildx vào Docker:

docker buildx create --name multiplatform-builder
docker buildx use multiplatform-builder
docker buildx inspect --bootstrap

Giải thích: Lệnh create sẽ tạo ra một Buildx builder instance mới với tên là multiplatform-builder. Sau đó, bạn sử dụng lệnh use để chọn builder này làm builder mặc định. Cuối cùng, lệnh inspect --bootstrap giúp bạn kiểm tra xem builder instance đã được cấu hình đúng cho việc build multi-platform hay chưa.

Giờ thì bạn đã có thể bắt đầu build những image container cross-platform rồi đấy!

Build Image Cross-Platform

Nếu bạn muốn build một image hỗ trợ cho nhiều kiến trúc, bạn chỉ cần sử dụng lệnh buildx như sau:

docker buildx build --platform linux/amd64,linux/arm64 -t <your_image_name>:<tag> .

Giải thích một chút nhé: Ở đây, --platform chỉ định các kiến trúc bạn muốn hỗ trợ (như amd64arm64), và -t là tên image bạn muốn build. Cuối cùng, dấu . đại diện cho thư mục hiện tại, nơi chứa file Dockerfile của bạn.

Khi chạy lệnh này, Docker sẽ tự động build image cho cả hai nền tảng amd64arm64. Thật tiện lợi phải không nào?

Đẩy Image Lên Registry

Cuối cùng, sau khi đã build xong image, bạn có thể đẩy nó lên một Docker registry như Docker Hub, để có thể sử dụng ở bất kỳ đâu.

docker push <our_image_name>:<tag>

Bây giờ, bạn có thể sử dụng image này trên bất kỳ máy chủ nào, bất kể nền tảng mà nó chạy!

Kết Luận

Vậy là mình vừa chia sẻ xong cách để tạo ra image container cross-platform bằng Buildx và Colima. Hy vọng bài viết này sẽ giúp ích cho các bạn trong việc phát triển và triển khai ứng dụng một cách dễ dàng hơn. Hãy thử ngay và chia sẻ với mình những kết quả mà bạn đạt được nhé!

Hẹn gặp lại các bạn trong bài viết sau. Chúc bạn code vui!

Anthony Nguyễn

Cây bút chính tại VietnamTutor

Bài viết cùng chuyên mục

Kịch bản tự động hóa cho doanh nghiệp bất động sản: từ Lead Facebook đến lịch hẹn với Sales

Kịch bản tự động hóa cho doanh nghiệp bất động sản: từ khi lead điền form Facebook đến khi Sales có đủ thông tin để gọi

Vibe coding và nợ kỹ thuật thầm lặng: kiểm soát bằng kỹ thuật ngữ cảnh

Vibe coding tăng tốc nhưng âm thầm tích lũy nợ kỹ thuật. Bài này giải thích vì sao và cách context engineering giúp bạn giữ codebase

Tự Động Hóa Spa Salon: Quy Trình Đặt Lịch & Giữ Chân Khách

Xem kịch bản tự động hóa spa salon toàn diện: đồng bộ lịch đa kênh, nhắc hẹn Zalo ZNS chống No-show và kích hoạt vòng lặp

Git stash: lưu tạm công việc dở và khôi phục đúng lúc

Git stash cho phép lưu tạm các thay đổi chưa commit để chuyển sang task khác, rồi khôi phục lại đúng lúc — tránh commit dở

Tự động hóa Trung tâm giáo dục: 3 Quy Trình Từ Lead Đến Nhập Học

Bài viết giúp trung tâm giáo dục thiết kế ba workflow tự động hóa từ lead đến học viên nhập học, có nhắc lịch, phân quyền

Tự động hóa Agency Marketing SEO: 3 Quy Trình Từ Hợp Đồng Đến Báo Cáo

Bài viết giúp chủ agency marketing/SEO thiết kế ba workflow tự động hóa từ hợp đồng ký đến báo cáo client định kỳ, có ngoại lệ,

RPA vs Tự Động Hóa Quy Trình: So Sánh Và Cách Kết Hợp Đúng

RPA mô phỏng thao tác trên giao diện, workflow automation điều phối hệ thống qua API. So sánh chi tiết và hướng dẫn kết hợp cho

Cloudflare Agents Week 2026: ADLC, WebMCP, AEO và Ý Nghĩa Cho Website

Tổng hợp Cloudflare Agents Week 2026 theo từng ngày: hạ tầng agent, ADLC, bảo mật agent, WebMCP và AEO. Kèm nhận định và việc cần làm

Bảo mật vibe coding: đừng để AI sinh lỗ hổng website

Bảo mật vibe coding không chỉ là quét lỗi sau khi AI viết code. Bài viết đưa ra checklist kiểm soát secret, prompt injection, dependency, auth

Git rebase bị conflict: cách sửa hoặc abort an toàn

Hướng dẫn xử lý git rebase bị conflict: cách kiểm tra file lỗi, sửa conflict marker, tiếp tục rebase, abort an toàn và khi nào không

Tự động hóa doanh nghiệp Ecommerce: 3 luồng xử lý nên làm

Bài viết giúp chủ Ecommerce thiết kế ba workflow tự động hóa doanh nghiệp Ecommerce từ đơn hàng đến CSKH, có ngoại lệ, phân quyền và

Công cụ tự động hóa mã nguồn mở: chọn và triển khai

Bài viết giúp SME chọn công cụ tự động hóa mã nguồn mở theo use case, năng lực vận hành, dữ liệu nhạy cảm và tổng