research
tutorials
docker
Sự khác biệt giữa RUN, CMD và ENTRYPOINT trong Dockerfile
Shell form
Thường được sử dụng nhiều với RUN –> chủ yếu đề cái package và các command trong image
Command-construct: <instruction> <command>
Exec form
Exec form được sử dụng nhiều hơn với CMD và ENTRYPOINT
Command-construct: <instruction> ["executable", "param1", "param2", ...]
CMD có 3 dạng form:
Cách thứ 2 được sử dụng cùng với ENTRYPOINT trong exec form. Nó set default parameters được thêm vào ENTRYPOINT nếu container chạy mà không truyền đối số nào, ngược lại nó sẽ bị ignore
==> docker run -it <tên_image>
–> sẽ cho ra kết quả || ngược lại khi có docker run -it <tên_image> /bin/bash
, CMD sẽ bị ignored và bash sẽ được thay thế
ENTRYPOINT có 2 dạng form:
Ví dụ ta có dockerfile
==> docker run -it <tên_image>
, kết quả sẽ là 🥥
Xin chào các bạn
==> docker run -it <tên_image>
Nguyễn Văn A 💯
Xin chào Nguyễn Văn A
Reference: Khác biệt giữa CMD vs ENTRYPOINT vs RUN
Difference between RUN, CMD and ENTRYPOINT in Dockerfile
Shell form
Usually used a lot with RUN -> mainly about the package and the commands in the image
Command-construct: <instruction> <command>
Exec form
Exec form is more used with CMD and ENTRYPOINT
Command-construct: <instruction> ["executable", "param1", "param2", ...]
CMD has 3 forms:
The second method is used together with ENTRYPOINT in exec form. It sets default parameters to be added to ENTRYPOINT if the container runs without passing any arguments, otherwise it will be ignored
==> docker run -it <name_image>
–> will output || otherwise when there is docker run -it <name_image> /bin/bash
, CMD will be ignored and bash will be replaced
ENTRYPOINT has 2 forms:
For example we have dockerfile
==> docker run -it <name_image>
, the result will be
Hello you
==> docker run -it <name_image>
Nguyen Van A
Hello Nguyen Van A
Reference: Difference between CMD vs ENTRYPOINT vs RUN