RUN yum -y update
RUN yum -y install httpd
이 경우 두 RUN은 다른 layer에 속한다.
즉 yum -y update
의 결과가 yum -y install httpd
에 반영되지 않는다.
따라서 update 후에 httpd를 설치하고 싶다면 다음과 같이 작성해야 한다.
RUN yum -y update && yum -y install httpd
또는
RUN yum -y update \\
&& yum -y install httpd
docker run -it --name centos01 centos:7 /bin/bash
이 명령어에서 /bin/bash는 사실 container를 run할 때 실행할 명령어를 의미한다.
CMD는 도커를 run 하면서 뒤에 명령어를 적어주면 무시되고 ENTRYPOINT는 무조건 실행된다.
FROM centos:7
RUN yum -y update && \\
yum -y install httpd
EXPOSE 80
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]
WORKDIR /var/www/html
COPY ./index.html .
위와 같은 Dockerfile에서
docker run -it --name centos01 centos:7 /bin/bash
으로 실행할 경우 /usr/sbin/httpd -D FOREGROUND
는 실행되지 않는다.
CMD
가 아니라 ENTRYPOINT
라면 실행된다.