Skip to content

Latest commit

 

History

History
147 lines (97 loc) · 3.74 KB

4. docker_dockerfile.md

File metadata and controls

147 lines (97 loc) · 3.74 KB

Dockerfile

Dockerfile Systax

# Comment
INSTRUCTION arguments

Các INSTRUCTION là các chỉ thị, được docker quy định. Khi khai báo, các bạn phải viết chữ in hoa.

Các arguments là đoạn nội dung mà chỉ thị sẽ làm gì.

Ví dụ:

# Comment
RUN echo 'we are running some # of cool things'

Dockerfile Commands

FROM

Dùng để chỉ ra image được build từ đâu (từ image gốc nào)

FROM ubuntu

hoặc có thể chỉ rõ tag của image gốc

FROM ubuntu14.04:lastest

RUN

Dùng để chạy một lệnh nào đó khi build image, ví dụ về một Dockerfile

FROM ubuntu
RUN apt-get update
RUN apt-get install curl -y

CMD

Lệnh CMD dùng để truyền một lệnh của Linux mỗi khi thực hiện khởi tạo một container từ image (image này được build từ Dockerfile)

Có các cách (trong docs nói có 3 cách) sử dụng lệnh CMD, ví dụ:

FROM ubuntu
RUN apt-get update
RUN apt-get install curl -y
CMD ["curl", "ipinfo.io"]

Hoặc

FROM ubuntu
RUN apt-get update
RUN apt-get install wget -y
CMD curl ifconfig.io

LABEL

LABEL <key>=<value> <key>=<value> <key>=<value> ...

Chỉ thị LABEL dùng để add các metadata vào image.

Ví dụ:

LABEL "com.example.vendor"="ACME Incorporated"
LABEL com.example.label-with-value="foo"
LABEL version="1.0"
LABEL description="This text illustrates \
that label-values can span multiple lines."

Để xem các label của images, dùng lệnh docker inspect

MAINTAINER

Dùng để đặt tên giả của images.

MAINTAINER <name>

Hoặc

LABEL maintainer "[email protected]"

EXPOSE

EXPOSE <port> [<port>...]

Lệnh EXPOSE thông báo cho Docker rằng image sẽ lắng nghe trên các cổng được chỉ định khi chạy. Lưu ý là cái này chỉ để khai báo, chứ ko có chức năng nat port từ máy host vào container. Muốn nat port, thì phải sử dụng cờ -p (nat một vài port) hoặc -P (nat tất cả các port được khai báo trong EXPOSE) trong quá trình khởi tạo contrainer.

ENV

ENV <key> <value>
ENV <key>=<value> ...

Khai báo cáo biến giá trị môi trường. Khi run container từ image, các biến môi trường này vẫn có hiệu lực.

ADD

ADD has two forms:
ADD <src>... <dest>
ADD ["<src>",... "<dest>"] (this form is required for paths containing whitespace)

Chỉ thị ADD copy file, thư mục, remote files URL (src) và thêm chúng vào filesystem của image (dest)

  • src: có thể khai báo nhiều file, thư mục, có thể sử dụng các ký hiệu như *,?,...
  • dest phải là đường dẫn tuyệt đối hoặc có quan hệ với chỉ thị WORKDIR

COPY

COPY <src>... <dest>
COPY ["<src>",... "<dest>"] (this form is required for paths containing whitespace)

Chỉ thị COPY, copy file, thư mục (src) và thêm chúng vào filesystem của container (dest).

Các lưu ý tương tự chỉ thị ADD.

ENTRYPOINT

ENTRYPOINT ["executable", "param1", "param2"] (exec form, preferred)
ENTRYPOINT command param1 param2 (shell form)

Hai cái CMD và ENTRYPOINT có tác dụng tương tự nhau. Nếu một Dockerfile có cả CMD và ENTRYPOINT thì CMD sẽ thành param cho script ENTRYPOINT. Lý do người ta dùng ENTRYPOINT nhằm chuẩn bị các điều kiện setup như tạo user, mkdir, change owner... cần thiết để chạy service trong container.

...

Tham khảo

https://docs.docker.com/engine/reference/builder/#cmd

https://codefresh.io/docker-tutorial/build-docker-image-dockerfiles/

https://viblo.asia/p/docker-chua-biet-gi-den-biet-dung-phan-2-RQqKLzeOl7z