“서버에서 실행되고 있는 상태의 도커 이미지”
“이미지를 기반으로 실행되는 실제 프로세스이며, OS 수준의 격리를 통해 독립적인 실행 환경을 제공”
컨테이너는 소프트웨어, 라이브러리, 종속성 등 애플리케이션 실행에 필요한 모든 것을 패키지로 묶어 표준화된 단위로 만든다.
컨테이너 vs 가상 머신
컨테이너 이미지를 만드는 설정 파일로, 어떤 이미지에서 출발해서 어떤 명령을 실행할 지를 명시한다.
FROM amazoncorretto:17
WORKDIR /app
COPY bulid/libs/*.jar app.jar
ENTRYPOINT ["java", "-Duser.timezone-Asia/Seoul", "-jar", "app.jar"]
FROM: 기본 환경 불러오기 (Java17이 이미 설치되어 있는 리눅스 환경을 가져온다.)WORKDIR: 작업할 폴더를 따로 만든다. (추후 복잡해지는 경우를 대비)COPY: 해당하는 파일을 WORKDIR 안으로 복사 (HOST에 있는 .jar 파일을 app.jar 이름으로 복사한다.ENTRYPOINT: 도커 컨테이너가 실행되면 자동으로 해당 명령어를 실행한다.자동 실행 명령어 CMD vs ENTRYPOINT
Dockerfile에는 컨테이너 자동 실행 명령어로 CMD와 ENTRYPOINT가 존재한다 이 둘의 차이는 docker run 명령어를 실행했을 때 발생한다.
CMD: 변경 가능. 실행할 때 다른 명령어가 입력되면 Dockerfile에 작성해둔 CMD 명령어는 무시되고 입력한 새로운 명령어가 실행된다.
ENTRYPOINT: 변경 불가능. Dockerfile에 적어둔 명령어가 고정으로 실행된다.