반응형
도커 이미지를 생성하기 위한 스크립트 형태의 파일이다.
이 파일은 도커 이미지가 어떻게 구성되어야 하는지를 정의한다.
즉, 이미지를 올릴 때 부가적인 옵션을 추가하는 기능이라고 볼 수 있다.
파일 및 디렉토리 추가, 환경 변수 추가, 컨테이너 시작 시 특정 프로세스 실행 등의 정의하는 것이 가능하다.
Dockerfile 실행 파일 만들기
백문이 불여일견.
설명은 뒷전으로 하고 당장 실행시킬 수 있는 Dockerfile을 만들어 실습해보자.
vi Dockerfile을 통해 아래의 내용을 넣어준다.
FROM ubuntu:latest
RUN apt-get update && apt-get install -y nginx
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
도커 이미지 만들기
docker build -t my-ubuntu .
도커 이미지 확인
docker image ls
이미지로 컨테이너 생성
docker run -d my-ubuntu
도커 이미지 삭제
docker image rm 이미지 이름
docker rmi 이미지 아이디
Dockerfile 실행 파일 만들기 (설명용)
아래와 같은 파일을 만들어주고 Dockerfile에 위치해 있는 폴더에서 touch test, touch test2로 ADD와 COPY를 테스트하기 위해 파일 2개를 만들어본다.
FROM ubuntu
ENV LANG=en_US.UTF-8
RUN apt-get update && apt-get install -y nginx
# -y는 모든 질문에 "예"라고 응답하는 옵션입니다.
RUN mkdir /app
ADD ./test /app
VOLUME /data
WORKDIR /app
COPY ./test2 /app
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
# daemon off를 안해주면 docker stop으로 컨테이너를 stop시켜도 백그라운드로 돌아가게 된다.
# daemon off를 하면 포그라운드로 실행되며 데몬으로 실행하지 않는다.
# 컨테이너를 종료하면 nginx도 종료되도록 하는 명령입니다.
- FROM : Dockerhub로 부터의 이미지 지정
- ENV : 환경 변수 지정 시 사용한다.
- RUN : 컨테이너화 된 이미지 내부에서 입력할 쉘 커맨드이다. 이미지 빌드(docker build) 시에 사전 설치처럼 실행된다.
- CMD : 컨테이너화 된 이미지 내부에서 입력할 쉘 커맨드이다. 이미지 빌드가 끝난 후 컨테이너를 실행(docker run)할 때 실행된다.
- ENTRYPOINT : CMD와 동일한 기능이지만 docker 명령어를 통해 값에 대한 오버라이드가 불가능하다.
명령 | 설명 | 실행 시점 |
오버라이드 가능 여부
|
RUN | 이미지 빌드 중에 실행되는 명령을 지정합니다. | 이미지 빌드 | 됨 |
CMD | 이미지가 실행될 때 실행할 기본 명령을 지정합니다. | 컨테이너 실행 | 됨 |
ENTRYPOINT | 이미지가 실행될 때 실행할 기본 명령을 지정합니다. | 컨테이너 실행 | 안 됨 |
- ADD : 파일 혹은 디렉토리를 컨테이너 내부의 디렉토리 안으로 복사한다.
파일이 아닌 디렉토리를 ADD하려면 끝이 “/”로 끝나야 한다. 경로는 URL이 될수도 있습니다.
ADD 할려고 하는 파일이 tar 압축파일인 경우 자동으로 압축을 풀어서 복사한다. - COPY : ADD와 같지만 URL 지정이 안되며 압축 파일을 자동으로 풀어주지 않는다.
- WORKDIR : cd 명령문처럼 컨테이너 상에서 작업 디텍토리로 전환을 위해서 사용된다. 여기서 설정된 경로를 기본 경로로 잡고 ADD나 COPY를 하는 것이라고 볼 수 있다. COPY . /app 같은 경우에는 WORKDIR이 필요없지만 COPY . . 은 WOKRDIR 기준으로 복사하는 것이라고 보면 된다.
- VOLUME : 도커 볼륨이나 호스트 볼륨 등을 연결한다.
728x90
'🐋 Docker' 카테고리의 다른 글
Docker Volume을 빠르게 배워보기 (0) | 2023.11.13 |
---|---|
[CI/CD] 스프링부트 + 깃헙 + 젠킨스 연동하면서 겪은 시행착오 (1) | 2022.09.23 |
도커(docker) + 톰캣(tomcat)으로 war 배포하기 (1) | 2020.02.07 |
윈도우에서 도커 사용 시 가상화 설정 (0) | 2020.02.07 |