CodeGym /Các khóa học /Docker SELF /Lựa chọn base image

Lựa chọn base image

Docker SELF
Mức độ , Bài học
Có sẵn

7.1 Base Image

Base image cực kỳ quan trọng khi tạo Docker image vì nó cung cấp điểm bắt đầu để build và xác định môi trường chạy ứng dụng của bạn. Việc chọn và cấu hình base image đúng có thể ảnh hưởng đáng kể đến hiệu suất, kích thước và độ bảo mật của image cuối cùng. Trong bài giảng này, tụi mình sẽ tìm hiểu cách để chọn và cấu hình base image cho Docker.

Base Image (hoặc Image Cơ bản) — là Docker image được sử dụng như lớp đầu tiên để tạo một Docker image mới. Nó có thể bao gồm hệ điều hành tối giản, các công cụ và thư viện cần thiết, hoặc thậm chí là một image trống (scratch image). Việc chọn base image quyết định những tài nguyên và package nào sẽ có sẵn trong container của bạn mặc định.

Chọn base image

Khi chọn base image, bạn cần xem xét vài yếu tố:

  1. Kích thước image: Image nhỏ hơn sẽ tải xuống nhanh hơn, chiếm ít dung lượng ổ đĩa hơn và có thể tăng tốc triển khai ứng dụng.
  2. Hỗ trợ và cập nhật: Sử dụng các image chính thức với bản cập nhật thường xuyên sẽ đảm bảo mức độ bảo mật cao hơn, sửa lỗi nhanh chóng và tăng sự ổn định khi vận hành.
  3. Khả năng tương thích: Base image cần bao gồm các thư viện và dependency cần thiết để ứng dụng của bạn hoạt động đúng cách.

Các base image phổ biến

1. Alpine Linux

Đây là một image cực kỳ nhẹ, chiếm khoảng 5 MB. Nó rất phù hợp cho những ứng dụng chỉ cần một hệ điều hành tối thiểu. Nhưng các developer cần lưu ý rằng Alpine không có nhiều thư viện tiêu chuẩn, nên một số ứng dụng có thể cần cấu hình thêm.

dockerfile

FROM alpine:3.12

2. Debian/Ubuntu

Đây là các image đầy đủ chức năng hơn, bao gồm nhiều công cụ và thư viện. Chúng phù hợp với các ứng dụng phức tạp đòi hỏi môi trường đầy đủ hoặc các thư viện tiêu chuẩn của Linux mà mọi người đã quen thuộc.

dockerfile

FROM ubuntu:20.04 

3. Official Language Images

Các image chính thức dành cho các ngôn ngữ lập trình, như Node.js, Python, Ruby và nhiều ngôn ngữ khác. Những image này đã có sẵn môi trường cần thiết để phát triển và chạy ứng dụng trên ngôn ngữ tương ứng, giúp cấu hình dễ dàng hơn.

dockerfile

FROM node:14 

7.2 Cấu hình base image

Sau khi chọn base image, cần phải cấu hình nó theo yêu cầu của ứng dụng của bạn. Việc cấu hình bao gồm việc cài đặt các package cần thiết, sao chép các file của ứng dụng và thiết lập môi trường.

Ví dụ: Cấu hình base image dựa trên Alpine Linux

dockerfile


# Sử dụng base image Alpine Linux
FROM alpine:3.12
        
# Cài đặt các package cần thiết
RUN apk add --no-cache python3 py3-pip
        
# Thiết lập thư mục làm việc
WORKDIR /app
        
# Sao chép các file của ứng dụng
COPY . .
        
# Cài đặt các dependencies
RUN pip3 install -r requirements.txt
        
# Đặt lệnh để chạy ứng dụng
CMD ["python3", "app.py"]

Ở ví dụ này, base image alpine:3.12 được sử dụng để cài đặt các package cần thiết, sao chép các file ứng dụng và cài đặt dependencies. Lệnh cuối cùng alpine:3.12 chỉ định cách chạy ứng dụng.

Ví dụ: Cấu hình base image dựa trên Ubuntu

dockerfile


# Sử dụng base image Ubuntu
FROM ubuntu:20.04
        
# Cập nhật và cài đặt các package cần thiết
RUN apt-get update && apt-get install -y \
    python3 \
    python3-pip \
    && rm -rf /var/lib/apt/lists/*
        
# Thiết lập thư mục làm việc
WORKDIR /app
        
# Sao chép các file của ứng dụng
COPY . .
        
# Cài đặt các dependencies
RUN pip3 install -r requirements.txt
        
# Đặt lệnh để chạy ứng dụng
CMD ["python3", "app.py"] 

Dockerfile này sử dụng base image ubuntu:20.04 và cài đặt Python và pip. Sau đó, nó sao chép các file ứng dụng và cài đặt dependencies, tương tự như ví dụ trước.

7.3 Thực hành tốt nhất

Cách lựa chọn và cấu hình base image một cách hợp lý:

1. Chọn các image tối giản: bắt đầu với các image nhỏ nhất đáp ứng yêu cầu của ứng dụng của bạn. Điều này sẽ giảm kích thước final image và tăng tính bảo mật.

2. Đừng cài đặt các gói dư thừa: chỉ cài các dependency thực sự cần thiết cho ứng dụng của bạn. Điều này sẽ giảm kích thước image và giảm bớt các lỗ hổng tiềm năng.

3. Xóa cache của package managers: sau khi cài đặt các gói, hãy xóa file tạm và cache để làm image nhẹ hơn.

dockerfile


RUN apt-get update && apt-get install -y python3 python3-pip && rm -rf /var/lib/apt/lists/*

4. Sử dụng multi-stage build: nó cho phép chia các bước build và runtime, giúp tạo các image nhẹ và an toàn hơn.

Terminal

        
# Bước build
FROM node:14 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
        
# Bước cuối cùng
FROM nginx:alpine
COPY --from=builder /app/build /usr/share/nginx/html

5. Thường xuyên cập nhật image: sử dụng các phiên bản mới nhất của base image để bao gồm các bản vá bảo mật và cập nhật mới nhất.

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION