Docker와 CI 환경 #4

최민석·2021년 2월 5일
1

Docker

목록 보기
4/5
post-thumbnail

도커 이미지 만들어보기

예시를BackendFrontEnd를 나누어서 도커 이미지를 만들었다.
후에 어떠한 방식으로 도커 파일 환경을 구성하는지 나열하고,

직접 이미지를 생성하는 과정을 알아보자.

1. Dockerfile 작성

DockerFile 이란?

  • Docker Image를 만들기 위한 설정 파일.
  • 컨테이너가 어떻게 행동해야하는지 대한 설정을 정의함.

  • Run을 통해서 패키지(종속성)을 먼저 받아와서 npm install 을 하게 된다.
  • 위의 종속성 먼저 다운로드하게 되면, 다시 빌드 할때 변경 점이 없게되면 생략해서 빌드 속도가 빠르다.
  • 어떻게 그럴 수 있을까? 바로 Image Layer 개념이다.

베이스이미지를 알아보기 전, WorkDIR의 역할을 좀 더 알아보자.

위는 Docker Container에 있는 폴더 들이다.

  • 그 중에서 WORKDIR 경로를 /app으로 해서, root폴더로 적용되는 상황이다.
  • COPY로 로컬에 있는 값들을 컨테이너의 root폴더에 넣기 위해서,
    ./ 경로를 명시하여 복사되게 했다.

이것이 WORKDIR의 디렉토리 현황이며,
사용 이유는 도커 컨테이너 파일과 겹치지 않게 하기 위해서다.


베이스 이미지가 뭘까?

이미지에는 여러 레이어로 구성되어있다. (코드 줄 마다 할당 레이어가 존재함.)

그 중에서 베이스이미지란?

  • 기초 개발을 하기 위한 OS와 같은 환경을 말한다.
  • 베이스 이미지 종류로는 여러가지가 존재한다.
  • 이 베이스 이미지는 DockerHub로부터 구성된 이미지를 가져옴.
  • 이런식으로 도커 허브에서 존재하는 운영체제(OS) 등의 환경을 가져와서 사용 할 수 있다.

이렇게 도커 파일은 완성되었고,
어떻게 실행해서 이미지를 만드는지 확인해보자.


이미지 생성 과정

  • Docker 클라이언트 전달
  • Docker 서버 전달
  • Image 생성

우리는 Node 기반의 alpine버전 베이스 이미지를 생성한다.

그 후, 임시 컨테이너를 만들어서 하드 디스크에 스냅샷을 저장한다.

이렇게 만들어진 임시 컨테이너에 시작 명령어를 지정한다.

우리 같은 경우는 npm run start를 지정을 했다.

CMD ["npm", "run", "start"] 이 실행문이 컨테이너가
만들어지게 되면, 실행되는 명령어다.

그렇게 하나의 이미지가 만들어지는 과정이다.

이렇게 만들어진 이미지를 사용하기 위해서는 build을 사용해야 한다.

  • 이미지 Build : docker build <현재 Dockerfile이 있는 위치>
  • 이미지 이름을 명시하며 Build : docker build -t <도커아이디/프로젝트이름>:<버전> <Docker파일 위치>

    위를 참고하여, 내가 만든 이미지를 기억하기 쉬운 이름을 주었다.

  • docker build -t alstjrchl97/docker-backend .
  • docker-backend라는 이름의 이미지가 build 되서 사용할 수 있게 되었다.

최종적으로 Dockerfile + 각종 데이터스냅샷 = 이미지
임을, 알 수 있는 그림이다.


이렇게 나만의 backend 도커 이미지 파일이 만들어졌다.

개발환경이 다른 frontend 도커 이미지를 만들어야 하며

두 이미지로 만든 도커 컨테이너를 연결과 동시,
같이 실행 할 수 있는 방법을 다음 포스트로 소개하려 한다.

profile
되돌아보며 성장합니다🔨

0개의 댓글