Dockerfile이란?
Docker이미지는 DockerHub에서 다운로드하여 사용할 수 있다.
이 이미지는 누군가 만들어서 올려놓은것이다.
그렇다면 이 이미지는 어떻게 만드는 것일까?
Dockerfile이라는 걸 활용해서 Docker이미지를 만들 수 있다!
정리하자면, Dockerfile이란 Docker 이미지를 만들게 해주는 파일이다.
FROM : 베이스 이미지 생성
FROM 란?
베이스 이미지를 생성하는 역할
Docker 컨테이너를 특정 초기 이미지(베이스 이미지)를 기반으로 추가적인 세팅을 할 수 있다
사용법
- 태그명을 사용하지 않으면 latest 버전을 사용
# 문법
FROM [이미지명]
FROM [이미지명]:[태그명]
COPY : 파일 복사(이동)
COPY란?
호스트 컴퓨터에 있는 파일을 복사해 컨테이너로 전달
사용법
# 문법
COPY [호스트 컴퓨터에 있는 복사할 파일의 경로] [컨테이너에서 파일이 위치할 경로]
# 예시
COPY app.txt /app.txt
ENTRYPOINT : 컨테이너 시작할 때 실행되는 명령어
ENTRYPOINT란?
컨테이너가 생성되고 최초로 실행할 때 수행되는 명령어
쉽게 말해 미니 컴퓨터의 전원을 켜고 나서 실행시키고 싶은 명령어를 작성하면 된다.
사용법
# 문법
ENTRYPOINT [명령문...]
# 예시
ENTRYPOINT ["node", "dist/main.js"]
RUN : 이미지를 생성하는 과정에서 사용하는 명령문 실행
RUN이란?
이미지 생성과정에서 명령어를 실행시켜야 할 때 사용
사용법
# 문법
RUN [명령문]
# 예시
RUN npm install
용어정리
💡RUN vs ENTRYPOINT
RUN : 이미지생성과정에서 필요한 명령어를 실행시킬 때 사용
ENTRYPOINT : 생성된 이미지를 기반으로 컨테이너를 생성한 직후에 명령어를 실행시킬때 사용
WORKDIR : 작업 디렉터리를 지정
WORKDIR란?
WORKDIR으로 작업 디렉터리를 전환하면 그 이후에 등장하는 모든 RUN, CMD, ENTRYPOINT, COPY, ADD 명령문은 해당 디렉터리를 기준으로 실행된다. 작업 디렉터리를 굳이 지정해 주는 이유는 컨테이너 내부의 폴더를 깔끔하게 관리하기 위해서이다. 컨테이너도 미니 컴퓨터와 같기 때문에 Dockerfile을 통해 생성되는 파일들을 특정 폴더에 정리해 두는 것이 추후에 관리가 쉽다. 만약 WORKDIR을 쓰지 않으면 컨테이너 내부에 존재하는 기존 파일들과 뒤섞여버린다.
사용법
# 문법
WORKDIR [작업 디렉토리로 사용할 절대 경로]
# 예시
WORKDIR /usr/src/app
EXPOSE : 컨테이너 내부에서 사용 중인 포트를 문서화하기
EXPOSE란?
테이너 내부에서 어떤 포트에 프로그램이 실행되는 지를 문서화하는 역할
EXPOSE 명령어는 쓰나 안 쓰나 작동하는 방식에는 영향을 미치지 않음
사용법
# 문법
EXPOSE [포트 번호]
# 예시
EXPOSE 3000
'DevOps > Docker' 카테고리의 다른 글
[Docker] Docker Compose (0) | 2024.08.08 |
---|---|
[Docker] Container (0) | 2024.08.06 |
[Docker] image (0) | 2024.08.06 |
[Docker] Docker의 기본 개념 (0) | 2024.08.05 |