Buildx là gì?
Docker Buildx là plugin CLI mạnh mẽ của Docker, được xây dựng trên BuildKit. Nó cho phép bạn xây dựng Docker image với nhiều tính năng hiện đại:
- Build multi-platform (amd64, arm64, nhiều kiến trúc cùng lúc)
- Cache build thông minh, nhanh hơn rất nhiều
- Hỗ trợ nhiều build driver
- Build song song và tối ưu hiệu suất
1. Cài đặt WSL2
wsl --install
wsl --install -d Ubuntu
Sau khi vào Ubuntu, chạy:
sudo apt update && sudo apt upgrade -y
2. Cài đặt Docker Engine + Buildx trên WSL2
sudo apt-get install -y ca-certificates curl gnupg lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Thêm user vào group docker:
sudo usermod -aG docker $USER
newgrp docker
sudo service docker start
3. Cấu hình Docker Buildx
docker buildx create --name mybuilder --driver docker-container --use --bootstrap
docker buildx ls
docker buildx use mybuilder
4. Kiểm tra bằng cách build React Vite App
Tạo project:
npm create vite@latest my-react-app -- --template react
cd my-react-app
npm install
Tạo file Dockerfile:
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
Build image với Buildx (multi-platform):
docker buildx build --platform linux/amd64,linux/arm64 -t my-react-vite-app:latest --load .
Chạy thử:
docker run -p 8080:80 my-react-vite-app:latest
sequenceDiagram
participant User
participant Buildx as Buildx (CLI Plugin)
participant Driver as Driver (Docker/Container)
participant BuildKit as BuildKit (The Real Engine)
User->>Buildx: docker buildx build .
Buildx->>Driver: Kiểm tra Builder nào đang "active"
Driver->>BuildKit: Gửi Context (Dockerfile + Files)
Note over BuildKit: Phân tích các Stage (Multi-stage)
Tối ưu hóa các bước chạy song song BuildKit-->>Driver: Trả về các lớp Image (Layers) Driver-->>Buildx: Hoàn tất build Buildx-->>User: Thông báo thành công
Tối ưu hóa các bước chạy song song BuildKit-->>Driver: Trả về các lớp Image (Layers) Driver-->>Buildx: Hoàn tất build Buildx-->>User: Thông báo thành công
Kết luận
Setup Docker + Buildx trên WSL2 là cách rất mạnh mẽ và phổ biến hiện nay để phát triển trên Windows.
Bạn thử xong thì comment kết quả docker buildx ls bên dưới nhé!
Nhận xét
Đăng nhận xét