Application Modernization/Container & PaaS

자주쓰는 Dockerfile 명령어

Cloud Applicaiton Architect 2021. 9. 14. 09:11
반응형

이 글은 2018년에 네이버 블로그에 포스팅했었던 글을 리포스팅한 글입니다.

 

 

dockerfile을 만드는데 자주 쓰는 키워드를 알아보도록 합니다.

FROM [base 이미지][:버전]
FROM ubuntu:16.08
FROM은 docker image를 생성할 base 이미지를 지정합니다.
버전명을 지정하지 않으면 가장 최신 이미지를 이용해 이미지를 생성합니다.

 

RUN [“실행할 명령어”,”파라미터1”,”파라미터2…]
RUN [“apt-get”,”install”,”-y”,”tomcat8”]
FROM으로 생성된 이미지내에서 실행할 명령어를 입력합니다.
[“명령어”,”파라미터”,…]등으로 실행 할 수 있지만 ‘[‘없이 바로 명령어를 입력해도 됩니다.
RUN apt-get install –y tomcat8


RUN명령어는 Docker Container를 build할 때 실행하는 명령어입니다.

 

EXPOSE [TCP포트]
EXPOSE 8080
Docker image로부터 외부로 노출할 TCP포트 번호를 입력합니다.
docker –p 8080:8080에서 입력하는 8080포트가 EXPOSE된 포트를 의미합니다.

 

ENV [환경파라미터명][환경파라미터 값]
ENV http_proxy 'http://proxy.yourcompany.co.kr:8080'
shell profile에서 사용할 환경변수를 선언합니다.

 

CMD [“실행할 명령어”,”파라미터1”,”파라미터2…]
CMD [“apt-get”,”install”,”-y”,”tomcat8”]
FROM으로 생성된 이미지내에서 실행할 명령어를 입력합니다.
[“명령어”,”파라미터”,…]등으로 실행 할 수 있지만 ‘[‘없이 바로 명령어를 입력해도 됩니다.
CMD apt-get install –y tomcat8


CMD 명령어는 Docker container가 실행될 때 실행되는 명령어입니다. &&를 통해 명령어를 overload 할수 있습니다.

 

ENTRYPOINT [“실행할 명령어”,”파라미터1”,”파라미터2…]
ENTRYPOINT [“apt-get”,”install”,”-y”,”tomcat8”]
FROM으로 생성된 이미지내에서 실행할 명령어를 입력합니다.


CMD와 다른 점은 &&를 통해 명령어 overload가 불가능합니다.

 

WORKDIR [컨테이너 내부에서 작업할 디렉토리]
WORKDIR /home/user
컨테이너가 실행 된 후 exec로 컨테이너 내부로 들어갔을 때 작업되는 기본 디렉토리입니다.

 

VOLUME [호스트컴퓨터 디렉토리]
VOLUME [“/ workspace/app”]
VOLUME 명령어를 통해 호스트 디렉토리를 docker container 내부와 연결 시킬 수 있습니다. 데이터소스, 로그파일, 설정파일등을 docker container 외부로 노출 시키고자 할 때 사용할 수 있습니다.

 

ADD [source 파일][목적파일]
ADD sample.txt /workspace/app/
호스트 컴퓨터의 파일을 컨테이너 내부의 특정 디렉토리로 복사하는 역할을 합니다.
COPY 명령어와 유사하나 ADD는 http:// URL에 등록된 파일도 복사 할 수 있는 기능이 있습니다.


* ADD, COPY 모두 복사할 소스 파일은 docker build를 실행시키는 디렉토리에 위치하고 있어야 합니다.

 

COPY [source 파일][목적파일]
COPY sample.txt /workspace/app/
호스트 컴퓨터의 파일을 컨테이너 내부의 특정 디렉토리로 복사하는 역할을 합니다.
ADD 명령어와 달리 URL에 등록된 파일은 복사가 안됩니다.

 

이상입니다.

 

감사합니다.

 

반응형

'Application Modernization > Container & PaaS' 카테고리의 다른 글

Docker Image Repository  (0) 2021.09.29
Docker Private Container Registry 만들기  (0) 2021.09.29
Dockerfile 로 docker image 작성  (0) 2021.09.14
Docker로 Tomcat MySQL 실행  (0) 2021.09.14
Docker로 Tomcat 실행  (2) 2021.09.14