
Dockerfile là một tệp văn bản hướng dẫn được sử dụng để tự động hóa quá trình cài đặt và cấu hình hình ảnh Docker . Dockerfile giúp triển khai nhiều vùng chứa Docker dễ dàng mà không cần phải duy trì cùng một hình ảnh trên nhiều máy ảo. Các hướng dẫn được thực thi theo thứ tự xuất hiện trong Dockerfile, giúp việc sử dụng và cập nhật chúng trở nên rõ ràng và trực quan. Bài viết này trình bày những điều cơ bản, kèm theo ví dụ, về cách thức hoạt động của Dockerfile.
Trước khi bạn bắt đầu
- Làm quen với hướng dẫn Bắt đầu của chúng tôi , tạo và cập nhật Linode và cài đặt Docker. Ngoài ra, bạn có thể nhanh chóng triển khai Linode được cập nhật, hỗ trợ Docker bằng Ứng dụng Docker Marketplace .
- Đảm bảo Linode của bạn an toàn bằng cách làm theo hướng dẫn của chúng tôi về Thiết lập và Bảo mật Phiên bản Điện toán .
- Hướng dẫn này giả định rằng bạn đã quen với việc sử dụng giao diện dòng lệnh Docker (CLI). Để tìm hiểu thêm về Docker CLI, hãy xem tài liệu của họ .
Dockerfile hoạt động như thế nào?
Dockerfile là một tập lệnh thực hiện các lệnh và hành động khác nhau để xây dựng một hình ảnh Docker, sau đó có thể được sử dụng để triển khai một vùng chứa Docker. Các lệnh và thông tin trong Dockerfile có thể được cấu hình để sử dụng các phiên bản phần mềm và phụ thuộc cụ thể cho các triển khai ổn định. Bạn cũng có thể sử dụng sổ đăng ký Docker để lưu trữ và truy cập các hình ảnh Docker công khai (hoặc riêng tư) của mình.
Sau khi Dockerfile được viết, bạn có thể sử dụng docker build
lệnh để tạo Docker image dựa trên hướng dẫn của Dockerfile. Sau đó, bạn có thể triển khai một container dựa trên image bằng các lệnh như docker run
hoặc docker create
.
Sau đây là các hướng dẫn phổ biến mà bạn có thể sử dụng trong Dockerfiles để xây dựng hình ảnh:
Định nghĩa cơ bản
- FROM : Xác định hình ảnh cơ sở, chẳng hạn như
ubuntu
hoặcdebian
, được sử dụng để bắt đầu quá trình xây dựng. Bắt buộc đối với mỗi Dockerfile. - NGƯỜI BẢO TRÌ : Xác định họ tên đầy đủ và địa chỉ email của người tạo hình ảnh.
Biến số
- ENV : Đặt các biến môi trường sẽ tồn tại khi container được triển khai.
- ARG : Đặt một biến thời gian xây dựng có thể chấp nhận được. Có thể được sử dụng như một giải pháp thay thế để
ENV
tạo một biến không tồn tại khi container được triển khai từ hình ảnh.
Thực hiện lệnh
- RUN : Thực thi các lệnh, chẳng hạn như lệnh cài đặt gói, trên một lớp hình ảnh mới.
- CMD : Thực hiện lệnh cụ thể trong vùng chứa được triển khai cùng với hình ảnh hoặc đặt tham số mặc định cho
ENTRYPOINT
lệnh. Chỉ sử dụng một lệnh cho mỗi Dockerfile. - ENTRYPOINT : Đặt một ứng dụng mặc định để sử dụng mỗi khi một container được triển khai với hình ảnh. Chỉ một ứng dụng được sử dụng cho mỗi Dockerfile.
- NGƯỜI DÙNG : Đặt UID (tên người dùng) để chạy lệnh trong vùng chứa.
- WORKDIR : Đặt đường dẫn chứa nơi các lệnh Dockerfile tiếp theo được thực thi.
Ghi chú: RUN
, CMD
, và ENTRYPOINT
mỗi cái có thể chạy ở dạng shell , lấy các đối số thông thường hoặc dạng exec , lấy các đối số dưới dạng một mảng JSON. Vì dạng exec không gọi shell lệnh nên thường được ưa chuộng và sử dụng trong hướng dẫn này.
Quản lý dữ liệu
- THÊM : Sao chép các tập tin từ nguồn đến hệ thống tập tin của hình ảnh tại đích đã thiết lập với chức năng tarball tự động và xử lý URL từ xa.
- SAO CHÉP : Tương tự
ADD
nhưng không có tarball tự động và xử lý URL từ xa. - VOLUME : Cho phép truy cập từ điểm gắn kết được chỉ định trong vùng chứa vào thư mục trên máy chủ.
Mạng lưới
- EXPOSE : Mở một cổng cụ thể để cho phép kết nối mạng giữa container và thế giới bên ngoài.
Tiếp theo, chúng ta sẽ tạo một Dockerfile mẫu sử dụng một số lệnh này.
Tạo Dockerfile
Để tạo Dockerfile:
1.Tại dấu nhắc lệnh (thông qua SSH hoặc Lish trong Linode Manager), hãy tạo và thay đổi sang thư mục mới:
mkdir ~/mydockerbuild && cd ~/mydockerbuild
Ghi chú: Thao tác này đặt thư mục Docker build vào thư mục home của bạn. Theo thông lệ tốt, không lưu Dockerfile vào chính thư mục home của bạn hoặc thư mục gốc của máy chủ. Thay vào đó, hãy tạo một thư mục riêng và đặt tất cả các tệp cần thiết vào đó (cùng với Dockerfile) như được hiển thị trong hướng dẫn này.
2.Tạo một Dockerfile mẫu:
touch example_dockerfile
3.Mở Dockerfile bằng trình soạn thảo văn bản bạn chọn (trong ví dụ này, chúng tôi sử dụng nano):
nano example_dockerfile
4.Sao chép ví dụ sau vào Dockerfile của bạn. Điều này tạo ra một Dockerfile tạo ra một hình ảnh Debian, thiết lập thông tin người bảo trì và chỉ cần trả về “Hello, Sunshine!” khi chạy:
FROM debian
MAINTAINER Jane Doe jdoe@example.com
CMD ["echo", "Hello, Sunshine!"]
5.Lưu Dockerfile.
6.Nhập cat example_dockerfile
và đảm bảo bao gồm văn bản ở trên.
Xây dựng Docker Image từ Dockerfile
Xây dựng hình ảnh từ Dockerfile bằng docker build
lệnh:
docker build ~/mydockerbuild -f example_dockerfile -t example_image
Việc gắn nhãn cho hình ảnh của bạn example_image
sẽ giúp triển khai vùng chứa ở bước tiếp theo dễ dàng hơn.
Kết quả đầu ra sẽ trông giống như thế này:
Sending build context to Docker daemon 4.096kB
Step 1/3 : FROM debian
---> 4a7a1f401734
Step 2/3 : MAINTAINER Jane Doe jdoe@example.com
---> Running in fdd81bd8b5c6
Removing intermediate container fdd81bd8b5c6
---> 1253842068a3
Step 3/3 : CMD ["echo", "Hello, Sunshine!"]
---> Running in d33e1bacf1af
Removing intermediate container d33e1bacf1af
---> a5d95e138b97
Successfully built a5d95e138b97
Successfully tagged example_image:latest
Như bạn có thể thấy, các hướng dẫn từ example_dockerfile
được thực hiện theo thứ tự. Hình ảnh được gắn nhãn example_image
hiện đã sẵn sàng để chạy để triển khai một container.
Chạy Docker Image của bạn để triển khai một Container
Việc chạy hình ảnh bạn vừa tạo để triển khai vùng chứa Docker giờ đây dễ dàng như nhập lệnh sau:
docker run example_image
Một container mới dựa trên example_image
được triển khai và lệnh được chỉ định trong CMD
hướng dẫn sau đó được thực thi từ container với đầu ra sau:
Hello, Sunshine!
Ghi chú: Nếu docker run
lệnh được thực thi và ảnh Docker không có sẵn trong thư mục làm việc hiện tại của bạn, ảnh đó sẽ được kéo từ sổ đăng ký Docker.
Đọc thêm
Xin chúc mừng! Bạn đã xây dựng Dockerfile đầu tiên và chạy hình ảnh Docker đầu tiên của mình.
Để biết thêm ví dụ và thông tin về cách sử dụng Dockerfiles với hình ảnh và vùng chứa Docker, hãy xem:
- hướng dẫn của chúng tôi về Cách sử dụng Docker Images, Container và Dockerfiles chi tiết ;
- Thực hành tốt nhất của Dockerfile của Docker .
Thông tin thêm
Bạn có thể muốn tham khảo các nguồn sau để biết thêm thông tin về chủ đề này. Mặc dù chúng tôi cung cấp với hy vọng rằng chúng sẽ hữu ích, nhưng xin lưu ý rằng chúng tôi không thể đảm bảo tính chính xác hoặc tính kịp thời của các tài liệu được lưu trữ bên ngoài.
Nguồn: https://www.linode.com/docs/guides/how-to-use-dockerfiles/