8.1 Tagging trong Docker
Tagging trong Docker là quá trình gắn label cho image, giúp việc quản lý phiên bản trở nên dễ dàng hơn. Điều này làm cho việc triển khai và cập nhật ứng dụng thuận tiện và dễ quản lý hơn. Trong bài giảng này, chúng ta sẽ tìm hiểu chi tiết về tag là gì, cách sử dụng chúng và những gợi ý giúp các bạn làm việc với chúng hiệu quả hơn.
Tag (tag) trong Docker — là label cho phép xác định phiên bản cụ thể của image. Các tag giúp việc theo dõi thay đổi dễ dàng hơn và lựa chọn các phiên bản cần thiết cho các môi trường khác nhau, như phát triển, kiểm thử và production.
Các khái niệm chính về tag:
- Duy nhất: tag xác định duy nhất một phiên bản cụ thể của image.
- Phiên bản: dùng tag để chỉ định phiên bản của image, ví dụ, v1.0, v2.0, latest.
- Linh hoạt: tag được sử dụng để tạo các image phù hợp với các giai đoạn phát triển cụ thể, như
beta
,stable
,prod
.
8.2 Làm thế nào để sử dụng tags
1. Gán tags khi build images
Bạn có thể gán tag cho image khi build nó bằng cách sử dụng tham số -t
của lệnh docker build
.
Ví dụ:
Trong ví dụ này, image được gán tên myapp
và tag 1.0.
docker build -t myapp:1.0 .
2. Gán thêm tags cho image hiện có
Bạn có thể thêm tags cho image hiện có bằng lệnh docker tag
.
Ví dụ:
Ví dụ này gán thêm cho image myapp:1.0
với tag latest
.
docker tag myapp:1.0 myapp:latest
3. Sử dụng tags khi chạy containers
Khi bạn khởi động container, bạn có thể chỉ định tag cụ thể của image mà bạn muốn sử dụng.
Ví dụ:
Ví dụ này khởi động một container dựa trên image myapp
với tag 1.0
.
docker run -d myapp:1.0
8.3 Thực hành gắn thẻ
Sử dụng Semantic Versioning
Semantic Versioning là một chuẩn gắn phiên bản giúp bạn hiểu mức độ thay đổi trong image.
Định dạng của Semantic Versioning:
<major>.<minor>.<patch>
Trong đó:
-
major
: Thay đổi chính, không tương thích với các phiên bản trước đó. -
minor
: Tính năng mới, tương thích với các phiên bản trước đó. -
patch
: Sửa lỗi và các thay đổi nhỏ khác.
Ví dụ:
docker build -t myapp:2.1.3 .
Sử dụng các nhãn bổ sung
Nhãn bổ sung giúp nhận diện trạng thái của image, ví dụ: beta
, alpha
, stable
hoặc prod
.
Ví dụ:
docker build -t myapp:1.0-beta .
docker build -t myapp:1.0-stable .
Cập nhật thẻ
Khi cập nhật image, nên thay đổi thẻ để dễ dàng theo dõi các thay đổi. Thẻ latest
thường được dùng để chỉ phiên bản mới nhất của image.
Ví dụ:
docker build -t myapp:2.0 .
docker tag myapp:2.0 myapp:latest
8.4 Ví dụ sử dụng thẻ
Ví dụ sử dụng thẻ trong các môi trường khác nhau:
Ví dụ 1: Phát triển
Trong phát triển, thường sử dụng images với thẻ đại diện cho phiên bản hiện tại hoặc trạng thái phát triển, ví dụ như dev
.
docker build -t myapp:dev .
docker run -d myapp:dev
Ví dụ 2: Kiểm thử
Trong môi trường kiểm thử, sử dụng images với thẻ đại diện cho các phiên bản cụ thể hoặc trạng thái, như beta.
docker build -t myapp:1.1-beta .
docker run -d myapp:1.1-beta
Ví dụ 3: Sản phẩm
Trong môi trường sản phẩm, điều quan trọng là sử dụng các phiên bản images ổn định và đã kiểm nghiệm, được đánh dấu bằng các thẻ như stable
, prod
, hoặc các phiên bản sematic, như 1.1.0-stable
.
docker build -t myapp:1.1.0-stable .
docker run -d myapp:1.1.0-stable
8.5 Thực hành tốt nhất
1. Luôn sử dụng semantic versioning
Hãy luôn tuân thủ semantic versioning cho tất cả các images. Điều này giúp bạn phân biệt rõ ràng các mức độ thay đổi và dễ dàng quản lý các phiên bản.
2. Sử dụng tags rõ ràng và có ý nghĩa
Sử dụng các tags phản ánh rõ trạng thái hoặc mục đích của image (ví dụ: beta
, stable
, prod
).
3. Tránh sử dụng latest trong production
Tag latest
có thể hữu dụng cho môi trường phát triển và kiểm tra, nhưng trong production hãy sử dụng các phiên bản cụ thể để tránh những thay đổi không mong muốn.
4. Ghi chú cách sử dụng các tags
Ghi chú lại cách và lý do sử dụng các tags trong dự án của bạn. Điều này giúp nhóm dễ hiểu hơn về quy trình versioning và giảm khả năng mắc lỗi.
Ví dụ Dockerfile với tags
Ví dụ 1: Tạo và gán tags
# Dockerfile cho phiên bản 1.0.0
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]
Các lệnh để build và gán tag
docker build -t myapp:1.0.0 .
docker tag myapp:1.0.0 myapp:stable
Ví dụ 2: Cập nhật image và gán tag
# Dockerfile cho phiên bản 1.1.0 với tính năng mới
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN rm -rf /app/tests /app/docs
ENV NODE_ENV=production
EXPOSE 3000
CMD ["node", "app.js"]
Các lệnh để build và gán tag
docker build -t myapp:1.1.0 .
docker tag myapp:1.1.0 myapp:latest
GO TO FULL VERSION