Docker - Xây dựng Files: Hướng dẫn cho người mới bắt đầu
Xin chào các bạn, những người sẽ trở thành những nhà vô địch Docker trong tương lai! Tôi rất vui mừng được làm hướng dẫn viên của bạn trong hành trình thú vị này vào thế giới của Docker và việc xây dựng files. Là một ai đó đã dạy khoa học máy tính trong nhiều năm, tôi đã thấy rất nhiều học sinh sáng lên khi họ hiểu được những khái niệm này. Vậy, hãy c rolled-up our sleeves và nhảy vào!
Hiểu về Docker Build
Trước khi chúng ta đi vào chi tiết, hãy bắt đầu với những điều cơ bản. Hãy tưởng tượng bạn đang xây dựng một ngôi nhà. Bạn cần một bản vẽ, phải không? Trong thế giới Docker, bản vẽ đó được gọi là Dockerfile. Và giống như bạn sử dụng bản vẽ đó để xây dựng ngôi nhà của bạn, chúng ta sử dụng lệnh docker build
để tạo một hình ảnh Docker từ Dockerfile của chúng ta.
Docker build là gì?
docker build
là một lệnh đọc hướng dẫn từ một Dockerfile và sử dụng chúng để tạo một hình ảnh Docker. Hãy tưởng tượng nó như một robot thầu xây dựng cá nhân của bạn rằng theo từng bước theo bản vẽ (Dockerfile) của bạn, tạo ra một bản sao hoàn hảo của môi trường bạn đã chỉ định.
Tạo Dockerfile đầu tiên của bạn
Hãy bắt đầu bằng cách tạo một Dockerfile đơn giản. Mở trình soạn thảo văn bản yêu thích của bạn và tạo một tệp mới có tên Dockerfile
(không có phần mở rộng).
FROM ubuntu:latest
RUN apt-get update && apt-get install -y nginx
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
Bây giờ, hãy phân tích điều này:
-
FROM ubuntu:latest
: Điều này tương tự như nói, "Bắt đầu với hệ điều hành Ubuntu mới nhất làm cơ sở." -
RUN apt-get update && apt-get install -y nginx
: Dòng này cập nhật danh sách gói và cài đặt Nginx. -
EXPOSE 80
: Điều này cho Docker biết rằng container của chúng ta sẽ lắng nghe trên cổng 80. -
CMD ["nginx", "-g", "daemon off;"]
: Đây là lệnh sẽ chạy khi container của chúng ta khởi động.
Xây dựng hình ảnh Docker của bạn
Bây giờ chúng ta đã có Dockerfile, hãy xây dựng hình ảnh của chúng ta! Mở terminal, điều hướng đến thư mục chứa Dockerfile của bạn và chạy:
docker build -t my-nginx-image .
Lệnh -t
đánh dấu hình ảnh của chúng ta với một tên, và dấu .
ở cuối cho Docker biết tìm kiếm Dockerfile trong thư mục hiện tại.
Nếu mọi thứ diễn ra tốt đẹp, bạn sẽ thấy một loạt các bước được thực hiện, và cuối cùng, một thông báo cho biết hình ảnh của bạn đã được xây dựng thành công.
Kỹ thuật Dockerfile Nâng cao
Bây giờ bạn đã có基础知识, hãy khám phá một số kỹ thuật nâng cao.
Xây dựng nhiều giai đoạn
Xây dựng nhiều giai đoạn giống như có nhiều bản vẽ cho các phần khác nhau của ngôi nhà của bạn. Chúng cho phép bạn sử dụng nhiều câu lệnh FROM
trong Dockerfile của bạn. Điều này đặc biệt hữu ích cho việc tạo ra các hình ảnh nhỏ hơn, hiệu quả hơn.
Dưới đây là một ví dụ:
# Giai đoạn 1: Xây dựng ứng dụng
FROM golang:1.16 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp
# Giai đoạn 2: Tạo hình ảnh cuối cùng
FROM alpine:latest
WORKDIR /root/
COPY --from=builder /app/myapp .
CMD ["./myapp"]
Trong ví dụ này, chúng ta đầu tiên xây dựng ứng dụng Go trong môi trường Go, sau đó sao chép chỉ binary đã xây dựng vào một hình ảnh nhỏ hơn của Alpine Linux.
Sử dụng ARG và ENV
ARG và ENV giống như các biến trong bản vẽ của bạn. ARG được sử dụng trong quá trình xây dựng, trong khi ENV đặt các biến môi trường trong hình ảnh cuối cùng.
FROM ubuntu:latest
ARG DEBIAN_FRONTEND=noninteractive
ENV APP_HOME /app
RUN mkdir $APP_HOME
WORKDIR $APP_HOME
Kiểm tra健康状况
Kiểm tra健康状况 giống như có một bác sĩ kiểm tra ngôi nhà của bạn thường xuyên để đảm bảo mọi thứ đều ổn.
FROM nginx:latest
HEALTHCHECK --interval=30s --timeout=3s \
CMD curl -f http://localhost/ || exit 1
Dockerfile này bao gồm một kiểm tra健康状况 rằngcurl localhost mỗi 30 giây để đảm bảo Nginx đang phản hồi.
Practices Tốt nhất cho Dockerfile
Bây giờ, hãy nói về một số thực hành tốt nhất. Đây giống như những quy tắc vàng của việc xây dựng nhà, nhưng cho Dockerfiles:
- Sử dụng hình ảnh cơ sở chính thức khi có thể
- Giảm thiểu số lượng lớp
- Đừng cài đặt các gói không cần thiết
- Sử dụng tệp .dockerignore
- Sắp xếp các tham số đa dòng
- Sử dụng bộ nhớ cache xây dựng
Dưới đây là bảng tóm tắt các thực hành này:
Thực hành | Mô tả |
---|---|
Sử dụng hình ảnh cơ sở chính thức | Đảm bảo an toàn và đáng tin cậy |
Giảm thiểu lớp | Giảm kích thước hình ảnh và thời gian xây dựng |
Tránh các gói không cần thiết | Giữ cho hình ảnh mảnh mai và an toàn |
Sử dụng .dockerignore | Loại bỏ các tệp không cần thiết khỏi ngữ cảnh xây dựng |
Sắp xếp các tham số đa dòng | Cải thiện khả năng đọc và dễ dàng cập nhật |
Sử dụng bộ nhớ cache xây dựng | Tăng tốc các xây dựng tiếp theo |
Kết luận
Và đó là tất cả, các bạn! Chúng ta đã đi từ cơ bản của docker build
đến một số kỹ thuật nâng cao và thực hành tốt nhất. Nhớ rằng, việc thành thạo Dockerfiles giống như học cách xây dựng ngôi nhà hoàn hảo - nó đòi hỏi sự thực hành, nhưng kết quả là xứng đáng.
Khi chúng ta kết thúc, tôi nhớ lại một học sinh đã từng nói với tôi, "Docker trông giống như phép thuật ban đầu, nhưng bây giờ tôi cảm thấy như một phù thủy." Đó là sức mạnh của việc hiểu các khái niệm này - nó biến điều kỳ diệu thành một công cụ bạn có thể sử dụng với tự tin.
Tiếp tục thử nghiệm, tiếp tục xây dựng, và quan trọng nhất, hãy tận hưởng quá trình. Docker là một công cụ mạnh mẽ có thể làm cho cuộc sống phát triển của bạn dễ dàng hơn khi bạn thành thạo nó. Và biết đâu, có lẽ một ngày nào đó bạn sẽ là người dạy người khác về những kỳ diệu của Docker!
Chúc các bạn vui vẻ với Docker!
Credits: Image by storyset