말그대로 빌드 될때 수행되는 명령어를 적는다고 생각하면 된다.
RUN <명령어1> && <명령어2> && <명령어3> && <명령어4>..
ex)
RUN apt update -y && apt install -y httpd ifconfig && systemctl restart httpd…
CMD 명령어는 Dockerfile에서 맨마지막만 적용되기 때문에 하나만 있어야 한다.
예를 들어
FROM httpd:latest
CMD ["httpd","-D","FOREGROUND"]
#내가 실행하고 싶은 명령을
#띄어쓰기마다 쉼표로 구분해서 쌍따옴표로 묶어주면 된다.
#CMD httpd -D FOREGROUND
root@contem:/docker# docker build -f Dockerfile-cmd -t myhttpd:10 .
# Dockerfile을 Dockerfile-cmd로 작성했기 때문에 -f로 지정해준다.

이렇게 docker ps로 내가 이미지에 등록한 CMD가 수행했는지 확인 할 수 있다.
FROM centos:7
ENTRYPOINT ["sleep"]
이렇게 해서 이미지 빌드하고 컨테이너 실행을 하면
root@contem:/docker# docker build -t entest:2 -f Dockerfile-sleep .
# 이미지빌드
root@contem:/docker# docker run -d --name en entest:2
# 컨테이너 실행

위 이미지 처럼 수행이 되지 않는다. 그래서 다시 실행할 때 command를 넣어주면
root@contem:/docker# docker rm -f en
root@contem:/docker# docker run -d --name en entest:2 infinity
# 이미지오른쪽에 command를 넣어보자. sleep과 어울릴만한.

이렇게 된다.
CMD와의 차이점
CMD : 추가 인자값으로 대체되지만 ENTRYPOINT는 추가 인자로 CMD를 받을 수 있다,
root@contem:/docker# vi Dockerfile-env
FROM nginx:latest
ENV ENVTEST=test123
root@contem:/docker# docker build -t envtest:1 -f Dockerfile-env .
root@contem:/docker# docker run -it --name env envtest:1 bash
컨테이너 내부에서 echo를 통해 확인하면

test123이 나온다.
root@contem:/docker# mkdir reg
root@contem:/docker# cd reg/
root@contem:/docker/reg# vi Dockerfile
간단한 Dockerfile을 작성한다.
FROM httpd:latest
root@contem:/docker/reg# docker build -t <도커ID>/myweb:1 .
# docker login -u <도커ID>로 로그인 후
root@contem:/docker/reg# docker push <도커ID>/myweb:1
# 업로드.

이렇게 나의 docker 허브에 올라왔음을 확인할수있다.