Dockerfile và các lệnh cơ bản trong docker

I. Dockerfile

Nó là một tệp văn bản đơn giản với một tập hợp lệnh hoặc hướng dẫn. Các lệnh/hướng dẫn này được thực thi tuần tự để thực hiện các hành động trên image cơ sở nhằm tạo image docker mới.

Một số lệnh thường dùng trong Dockerfile:

FROM — Image gốc: alpine, unbutu…

LABEL — Metadata cho image. Thường sử dụng để add thông tin maintainer.

ARG — Định nghĩa giá trị biến được dùng trong lúc build image.

ENV — Thiết lập một biến môi trường.

RUN — Có thể tạo một lệnh khi build image. Được sử dụng để cài đặt các package vào container.

COPY — Sao chép các file hoặc thư mục vào container.

ADD — Sao chép các file hoặc thư mục vào container.

CMD — Cung cấp một lệnh và đối số cho container thực thi. Các tham số có thể được ghi đè và chỉ có một CMD.

SHELL — Chỉ thị Shell cho phép ta có thể ghi đè shell mặc định.

WORKDIR — Thiết lập thư mục đang làm việc cho các chỉ thị khác như: RUN, CMD, ENTRYPOINT, COPY, ADD,…

ENTRYPOINT — Cung cấp lệnh và đối số cho một container thực thi.

EXPOSE — Khai báo port lắng nghe của image.

VOLUME — Tạo một điểm gắn thư mục để truy cập và lưu trữ data.

II. Dockerfile Example

# OS alpine 3.13
FROM nginx:1.19.8-alpine

#Thêm thông tin maintainer
LABEL maintainer="DEMO <demo@gmail.com>" 

#Kiểm tra alpine & nginx version
RUN cat /etc/os-release | grep PRETTY_NAME && nginx -v 

#Định nghĩa biến
ARG TZ=UTC 

#Thiết lập biến môi trường
ENV TZ=$TZ \
	COMPOSER_ALLOW_SUPERUSER=1 

#Cập nhật timezone với biến môi trường đã định nghĩa ở trên
RUN cp /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && date

#Xóa config default nginx
RUN rm /etc/nginx/conf.d/default.conf 

#copy file config nginx bên ngoài vào container
COPY nginx/nginx.conf /etc/nginx/nginx.conf.template  

#Thư mục làm việc
WORKDIR /var/www/html 

#Khai báo port lắng nghe
EXPOSE 80 81 82 443 

#Copy file bash bên ngoài vào container
COPY nginx/start /command/start 

#Set permission file bash bên trong container
RUN ["chmod", "+x", "-R", "/command/start"] 

#Cung cấp lệnh và đối số cho một container thực thi
ENTRYPOINT ["/command/start"]  

III. Các lệnh cơ bản trong docker

Xem danh sách image hoặc container:

$ docker image/container ls

Xóa image hoặc container:

$ docker image/container rm <tên image/container >

Xóa tất cả image hiện có:

$ docker image rm $(docker images –a –q)

Xem tất cả container hiện có:

$ docker ps –a

Stop container:

$ docker stop <tên container>

Run container từ image và đổi tên:

$ docker run –name <tên container> <tên image>

Stop tất cả container:

$ docker stop $(docker ps –a –q)

Xóa tất cả container hiện có:

$ docker rm $(docker ps –a –q)

VI. Kết luận

Trong bài này, mình giới thiệu lý thuyết cơ bản về Dockerfile các lệnh cơ bản trong docker

Cảm ơn tất cả mọi người đã đọc.

Related Posts