-3

[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 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 support@kienle.com

#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 support@kienle.com
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 để 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

Trên đây là 19 chỉ thị quan trọng hay được sử dụng trong Dockerfile để build images. Chúc các bạn thành công.!


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí