Tạo Docker Image đa kiến trúc với Docker Buildx
Việc xây dựng Docker image đa kiến trúc chủ yếu dựa vào công cụ Docker Buildx. Công cụ này thường được tích hợp sẵn trong các bản cài đặt Docker mới, giúp đơn giản hóa quá trình tạo ra image tương thích với nhiều kiến trúc CPU khác nhau như linux/amd64 và linux/arm64.
Quy trình tổng quát để xây dựng Docker image đa kiến trúc với Buildx:
1. Đảm bảo Buildx khả dụng Kiểm tra Buildx có được cài đặt bằng lệnh:
docker buildx version
Nếu chưa có, bạn có thể cần kích hoạt hoặc cập nhật Docker lên phiên bản mới hơn.
2. Tạo builder instance cho Buildx Builder instance là bắt buộc để xử lý việc build đa nền tảng.
docker buildx create --name mybuilder --use
Lệnh này sẽ tạo một builder mới có tên mybuilder
và đặt nó làm builder hiện tại.
3. Build và push image đa kiến trúc
Dùng lệnh docker buildx build
, chỉ định các nền tảng mục tiêu và thêm cờ --push
để tải image lên registry:
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t your-registry/your-image-name:latest \
--push .
Thay your-registry/your-image-name:latest
bằng tên và tag mong muốn (bao gồm cả registry nếu push lên remote, ví dụ: Docker Hub, AWS ECR).
Dấu .
ở cuối cho biết Dockerfile nằm trong thư mục hiện tại.
Ví dụ Dockerfile (không cần chỉnh sửa cho multi-arch):
# Sử dụng base image đa kiến trúc
FROM alpine:latest
# Đặt thư mục làm việc
WORKDIR /app
# Copy file ứng dụng
COPY . .
# Cài đặt dependencies (ví dụ cho ứng dụng đơn giản)
RUN apk add --no-cache bash
# Lệnh chạy khi container khởi động
CMD ["bash"]
Ưu điểm chính của Buildx:
- Một lệnh duy nhất: Có thể build và push nhiều image đa kiến trúc cùng lúc.
- Không cần chỉnh Dockerfile: Thường có thể dùng lại Dockerfile hiện có mà không phải thay đổi.
- Manifest list tự động: Tự động tạo và push manifest list, cho phép người dùng pull đúng image phù hợp với kiến trúc CPU của họ.