Dockerfile là một tập lệnh bao gồm các lệnh và tham số được áp dụng cho một image cơ sở để cuối cùng tạo ra một image mới. Tên file bắt buộc phải là Dockerfile.
Nguồn gốc của Image
- Tải từ registry từ xa (ví dụ: Docker Hub)
- Tạo từ container đang chạy
- Giải nén từ file .tar
- Xây dựng từ Dockerfile: Đây là file văn bản chứa các lệnh để tạo image
Các lệnh phổ biến
FROM image_name:tag– Xác định image cơ sở để xây dựngMAINTAINER lqz– Khai báo người tạo imageENV key value– Thiết lập biến môi trường (có thể có nhiều dòng). Ví dụ:ENV DB_PASSWORD lqz123. Có thể ghi đè khi chạy container với tham số-e DB_PASSWORD=xxxxRUN command– Là lệnh cốt lõi của Dockerfile (có thể có nhiều dòng). Đây là các lệnh Linux cần thực thiADD host_path container_path– Sao chép file từ máy chủ vào container. Nếu là file nén, nó sẽ tự động được giải nénCOPY host_path container_path– Sao chép file từ máy chủ vào container mà không giải nénWORKDIR path_dir– Thiết lập thư mục làm việc (khi vào container bằngdocker exec, sẽ ở đường dẫn này)CMD command– Lệnh mặc định khi chạy container. Nếu có nhiều lệnh CMD, chỉ lệnh cuối cùng có hiệu lực. Lệnh này có thể bị ghi đè khi chạy container
Ví dụ 1: Tạo image Centos có cài Vim
Nội dung Dockerfile
FROM centos:7
MAINTAINER lqz
WORKDIR /home
RUN yum install -y vim
RUN mkdir lqz
ADD ./xx.txt ./yy.txt
Xây dựng image
docker build -t='centos_lqz_vim' .
Ví dụ 2: Tạo image cho ứng dụng Django và chạy
Các bước thực hiện
- Chuẩn bị ứng dụng Django (ví dụ: quản lý sách)
- Trong thư mục dự án, tạo Dockerfile với nội dung:
FROM python:3.8 MAINTAINER lqz WORKDIR /soft COPY ./requirements.txt /soft/requirements.txt RUN pip install -r requirements.txt -i https://pypi.doubanio.com/simple CMD ["python","manage.py","runserver","0.0.0.0:8080"] - Đẩy code lên Git
- Trên máy triển khai, clone dự án về:
git clone https://gitee.com/liuqingzheng/books.git - Vào thư mục
booksvà chạy lệnh xây dựng image:docker build -t='django_books' . - Tạo container từ image vừa xây dựng:
docker run -id --name=books -v /root/books:/soft -p 8080:8080 books_django:latest - Từ trình duyệt Windows, truy cập vào địa chỉ máy ảo (VM) để xem ứng dụng
- Khi tiếp tục phát triển, sửa code và đẩy lên Git
- Trên máy triển khai, kéo code mới nhất về
- Nếu chỉ thay đổi code (không thay đổi phụ thuộc bên thứ ba), chỉ cần khởi động lại container. Nếu có thay đổi phụ thuộc, cần xây dựng lại image và chạy container mới