NGUYEN XUAN CUONG

http://nxcuong.ued.vn

Bài 8 - Sử dụng Dockerfile để tự động tạo các image trong Docker

Ở các phần trước ta đã sử dụng các lệnh Docker tương tác trực tiếp hết lệnh này đến lệnh khác để lấy image về, tạo container, chạy và cài đặt các thành phần vào container ... Rất nhiều thao tác trong quá trình này bạn có thể lưu vào một file gọi là Dockerfile, và ra lệnh cho Docker đọc file đó, chạy từng lệnh theo chỉ thị trong file đó để cuối cùng có được image theo nhu cầu.
Bài 8 - Sử dụng Dockerfile để tự động tạo các image trong Docker
Ở các phần trước ta đã sử dụng các lệnh Docker tương tác trực tiếp hết lệnh này đến lệnh khác để lấy image về, tạo container, chạy và cài đặt các thành phần vào container ... Rất nhiều thao tác trong quá trình này bạn có thể lưu vào một file gọi là Dockerfile, và ra lệnh cho Docker đọc file đó, chạy từng lệnh theo chỉ thị trong file đó để cuối cùng có được image theo nhu cầu.

Sử dụng Dockerfile
Dockerfile là một file text, trong đó chứa các dòng chỉ thị để Docker đọc và chạy theo chỉ thị đó để cuối cùng bạn có một image mới theo nhu cầu. Khi đang có một Dockerfile giả sử có tên là Dockerfile để ra lệnh cho Docker chạy nó bạn có thể gõ:
docker build -t nameimage:version --force-rm -f Dockerfile
    Bạn chú ý dấu . ở cuối lệnh docker build ở trên, có nghĩa tìm file có tên Dockerfile ở thư mục hiện tại.
    -t nameimage:version là đặt tên và tag được gán cho image mới tạo ra.

Bạn có thể dùng Visual Studio Code có cài thêm Extension Docker for Visual Studio Code để khi soạn thảo file có tên Dockerfile nó gợi ý và highlight cú pháp cho bạn.

Tạo Dockerfile đơn gian đầu tiên
Dockerfile là file text, bạn dùng bất kỳ trình soạn thảo text nào tạo ra file này, và đưa vào nội dung là các chỉ thị. Giờ ta sẽ vừa thực hành vừa học từng bước. Ví dụ tạo file có tên Dockerfile nhập nội dung sau:
# xây dựng image mới từ image centos:latest (CentOS Linux 8 - AppStream)
FROM centos:latest

RUN dnf -y --disablerepo '*' --enablerepo=extras swap centos-linux-repos centos-stream-repos
RUN dnf -y distro-sync
RUN dnf -y update

# Cập nhật các gói và cài vào đó HTTPD, HTOP, VIM
RUN dnf install -y httpd httpd-tools \
    && dnf install -y htop -y \
    && dnf install -y vi

#Thiết lập thư mục hiện tại
WORKDIR /var/www/html
# Copy tất cả các file trong thư mục hiện tại (.)  vào WORKDIR
ADD . /var/www/html

#Thiết lập khi tạo container từ image sẽ mở cổng 80
# ở mạng mà container nối vào
EXPOSE 80

# Khi chạy container tự động chạy ngay httpd
ENTRYPOINT ["/usr/sbin/httpd"]

#chạy terminate
CMD ["-D", "FOREGROUND"]
Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây