Tạo và sử dụng Dockerfile

  1. Dockerfile là gì?

Dockerfile là tệp mô tả cấu trúc của một hình ảnh Docker.

  1. Tác dụng của Dockerfile?

Dockerfile được sử dụng để xây dựng hình ảnh Docker tùy chỉnh.

  1. Cách tạo hình ảnh thông qua Dockerfile

a. Tạo một tệp Dockerfile ở vị trí mong muốn.

b. Xây dựng hình ảnh từ Dockerfile:

docker build -t ten_hinh_anh:version .

  1. Quá trình xây dựng hình ảnh từ Dockerfile

Lưu ý: Cần ghi các tệp và thư mục không cần thiết vào dockerIgnore, vì Docker mặc định sẽ gửi tất cả tệp trong thư mục chứa Dockerfile đến engine Docker, làm chậm quá trình xây dựng. Trong quá trình này, các hình ảnh tạm thời sẽ được tạo ra và lưu trong bộ nhớ đệm, cuối cùng sẽ tạo ra hình ảnh cuối cùng.

  1. Các lệnh trong Dockerfile
FROM    Chỉ định hình ảnh cơ sở
MAINTAINER   Thông tin liên hệ của người duy trì
RUN      Thực thi lệnh trong quá trình xây dựng
EXPOSE    Khai báo cổng mở cho container
WORKDIR    Đặt đường dẫn làm việc mặc định
ENV      Đặt biến môi trường
ADD    Sao chép tệp từ máy chủ đến hình ảnh và tự động giải nén nếu cần
COPY    Sao chép tệp từ máy chủ đến hình ảnh
VOLUME   Định nghĩa volume cho dữ liệu bền vững
CMD    Lệnh mặc định khi khởi chạy container
ENTRYPOINT     Định nghĩa lệnh khởi chạy chính cho container
  1. Lưu ý khi xây dựng Dockerfile
  • Tên tệp nên là Dockerfile.
  • Tất cả các từ khóa phải viết hoa và có ít nhất một tham số.
  • Dấu # dùng để chú thích.
  • Mỗi lệnh tạo một lớp mới trong hình ảnh.
  1. Chi tiết về các lệnh Dockerfile

WORKDIR: Nếu thư mục không tồn tại, nó sẽ tự động được tạo. Có thể đặt nhiều WORKDIR trong Dockerfile, chúng sẽ được áp dụng theo thứ tự.

Ví dụ:

WORKDIR  /apps
WORKDIR  data
# Đường dẫn cuối cùng sẽ là /apps/data

ENV: Đặt biến môi trường.

ENV   key  value  hoặc key=value

VOLUME: Định nghĩa volume cho dữ liệu bền vững. Nếu không khai báo, vẫn có thể sử dụng -v khi chạy container.

VOLUME  /root/data/

CMD & ENTRYPOINT:

  • Cả hai đều chỉ định lệnh mặc định khi khởi chạy container.
  • CMD: Chỉ định lệnh mặc định, có thể bị thay thế bởi các tham số sau docker run.
  • ENTRYPOINT: Chỉ định lệnh cố định, khó thay đổi hơn CMD.

Cách sử dụng:

CMD:  redis-server
CMD:  ["redis-server"]  # Phương pháp này được khuyến nghị

Khác biệt:

  • Thay đổi lệnh CMD: docker run ten_hinh_anh:version lenh_moi
  • Thay đổi lệnh ENTRYPOINT: docker run --entrypoint=lenh_moi ten_hinh_anh:version tham_so

Sử dụng CMD và ENTRYPOINT kết hợp:

ENTRYPOINT  ["ls"]
CMD ["/root/data"]
  1. Ví dụ về Dockerfile
1. Tạo một dự án Django
2. Phát triển tính năng đơn giản, kết nối với cơ sở dữ liệu
3. Kiểm thử mã nguồn
4. Viết Dockerfile để tạo hình ảnh dự án
5. Chạy hình ảnh

Thẻ: docker dockerfile container Image build

Đăng vào ngày 17 tháng 6 lúc 00:57