FROM : Docker Base Image (기반이 되는 이미지, <이미지 이름>:<태그> 형식으로 설정)
RUN : Shell Script 또는 명령을 실행
CMD : 컨테이너가 실행되었을 때 명령이 실행
ADD : 파일 / 디렉터리 추가 ADD 같은 경우는 http로도 복사가 가능하다. http://source.file/url /destination/path
COPY : 파일 복사 Local디렉터리파일:컨테이너 내부디렉터리 example) /var/www/html/index.html /opt/html/index.html
ENTRYPOINT : 컨테이너가 시작되었을 때 스크립트 실행
EXPOSE : 호스트와 연결할 포트 번호를 설정한다.
USER : 명령 실행할 사용자 권한 지정
WORKDIR : 이동 할 디렉터리 지정
Shell 방식
cmd yum install -y httpd
Exec 방식
cmd [“/bin/bash”, “-c”, “yum install -y httpd”]
Tip 1 - Dockerfile을 작성하면서 FROM: python, FROM: nodejs 등에 이미지를 Pull 해서 작성하는 경우가 많다 근데 왜 어떻게 RUN mkdir 이런 리눅스에서 사용하는 언어가 가능한걸까? 이유는 단순하다. 이런 이미지들이 대부분 linux 또는 unix 로 이루어져서 기본 명령어가 내장되어 있기 떄문이다.
CMD, ENTRYPOINT 차이점
Tip 2 ENTRYPOINT와 CMD는 같은 데몬을 실행하는데 뭐가 다르다는거지? 라는 의문을 가져올 수 있다.
바로 차이점은 컨테이너 시작시 실행 명령에 대한 Default 지정 여부이다.
Default 지정여부가 무엇일까? **
지정 여부는 Container가 실행시 받은 인자로 지정한 명령을 실행하는 것을 말한다.결과를 봐서 해보자(아래 확인). 즉, 차이점을 더 깊게 설명하자면 CMD옵션을 사용시 추가 인자 값을 대입하면 기존에 있던 명령을 추가 인자 값으로 변경하지만, ENTRYPOINT같은 경우는 기존에 인자 값에다가 + 추가 인자 값을 더해주는 과정이다.
ENTRYPOINT [COMMAND] - 실행할 명령어 지정
CMD [PARAMETER] - 명령어를 실행하는데, 파라미터로 넘기는 값을 지정
ADD, COPY 차이점
FROM amazonlinux:2
.
.
.
ADD github.com/skills .
이런식으로 외부 즉, URI를 가져와서 사용할 수 도 있다.
FROM amazonlinux:2
.
.
.
COPY localdirect .
이제 Dockerfile을 야무지게 작성해보자!!