[Docker] 19 Chỉ thị quan trọng trong Dockerfile

Chào các bạn, số tiếp theo về TIP chia sẻ về Docker hôm nay mình cùng tìm hiểu về các chỉ thị quan trọng trong Dockerfile. 1. Dockerfile là gì 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

Chào các bạn, số tiếp theo về TIP chia sẻ về Docker hôm nay mình cùng tìm hiểu về các chỉ thị quan trọng trong Dockerfile.

1. Dockerfile là gì

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 của mình.

Dockerfile –> Docker Image –> Docker Container

2. Các chỉ thị Dockerfile

#1: FROM –

FROM : mọi Docker file đều có chỉ thị này, chỉ định image cơ sở

Ví dụ 1:

#specify a Base Image

FROM ubuntu:latest

Ví dụ 2:

#specify a Base Image

FROM node:12

#2: MAINTAINER –

MAINTAINER Được sử dụng để nói về người tạo Docker Image

Ví dụ:

MAINTAINER [email protected]

#3: CMD –

CMD dùng để thực thi lệnh khi chạy container

Ví dụ 1:

#To run apache2 in foreground
CMD ["/usr/sbin/apache2", "-D", "FOREGROUND"]

Ví dụ 2:

FROM ubuntu:latest
CMD /bin/bash

#4: RUN –

RUN : chạy các lệnh.

Ví dụ:

FROM ubuntu:latest
MAINTAINER [email protected]
RUN apt-get update
RUN apt-get install -y apache2

Nếu muốn run .sh(shell script) file trong Dockerfile

COPY test.sh .
RUN ./test.sh
#OR
RUN /path/to/test.sh

#5: LABEL –LABEL Được sử dụng để chỉ định thông tin của Docker Image.

Ví dụ:

FROM ubuntu:latest
LABEL "author"="Kien Le"
LABEL "Date"="2020-09-29"

#6: EXPOSE –

EXPOSE thiết lập cổng
Ví dụ 1:

#To Expose port 80 of Docker container
EXPOSE 80

Ví dụ 2:

EXPOSE 8080/tcp

#7: ENV –

ENV thiết lập biến môi trường

Ví dụ 1:

FROM node:12
ENV workdirectory /usr/node

#8: ADD –

ADD: sao chép dữ liệu
Syntax:

ADD <source>... <destination>

Ví dụ 1:

ADD java/jdk-8u231-linux-x64.tar /opt/jdk/

Ví dụ 2:

ADD src /home/ubuntu/test/

#9: COPY –

COPY sao chép dữ liệu

Syntax:

COPY <source>... <destination>

Ví dụ 1:

#To Install All dependencies for Node.js App
COPY package*.json ./
RUN npm install 
#To copy all application packages 
COPY . .

Ví dụ 2:

COPY index.html /var/www/html

#10: ENTRYPOINT –

ENTRYPOINT Được sử dụng để định cấu hình một container mà bạn có thể chạy dưới dạng tệp thực thi.
Ví dụ 1:

FROM ubuntu:latest
ENTRYPOINT ["ls"]

#11: VOLUME –

VOLUME gắn ổ đĩa, thư mục
Ví dụ 1:

FROM node:12
RUN mkdir /node
WORKDIR /node
RUN echo "Welcome to Node.js" > node
VOLUME /node

**#12: USER – **

USER user chạy trong container

Ví dụ 1:

USER admin
To create new user in Dockerfile and login to user.

Ví dụ 2:

RUN adduser -D admin
USER admin

#13: WORKDIR –

WORKDIR thư mục làm việc

Ví dụ 1:

#To Create nodejsapp directory
WORKDIR /nodejsapp

#14: ARG –

ARG Định nghĩa các biến truyền vào khi build

Ví dụ 1:

ARG JAVA_PATH=/opt/jdk/jdk1.8.0_251
ENV JAVA_HOME ${JAVA_PATH}

#15: ONBUILD –

ONBUILD được sử dụng để chỉ định lệnh chạy
Ví dụ 1:

FROM node:12
RUN mkdir -p /usr/node/app
WORKDIR /usr/node/app
ONBUILD COPY package.json /usr/node/app/
ONBUILD RUN npm install
ONBUILD COPY . /usr/node/app
CMD [ "npm", "start" ]

#16: STOPSIGNAL –

STOPSIGNAL Gửi lệnh này để container thoát khỏi hệ thông

Ví dụ 1:

STOPSIGNAL SIGQUIT

#17: SHELL –

SHELL Được sử dụng để thiết lập shell mặc định.

Ví dụ:

SHELL ["/bin/bash", "-c", "echo hello"]

#18: HEALTHCHECK –

HEALTHCHECK Kiểm tra sức tình trạng container

Ví dụ 1:

FROM ubuntu:latest
HEALTHCHECK --interval=60s --timeout=5s 
  CMD curl -f http://fosstechnix.info/ || exit 1
EXPOSE 80

#19: .dockerignore –

.dockerignore lượt bỏ các file không được chạy khi build

sudo nano .dockerignore
*.yaml
__pycache__/
.git
.aws
.env

Lời kết

Như vậy qua bài viết này mình chia sẻ các bạn các chỉ thị hay được sử dụng trong Dockerfile để build images. Chúc các bạn thành công.!

Nguồn: viblo.asia

Bài viết liên quan

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ