[인프라 탐험기] 컨테이너화의 개념과 도커 구성 요소

Broccolism·2022년 9월 17일
2

인프라 탐험기

목록 보기
1/1

유투브 드림코딩: 도커 한방에 정리 🐳 (모든 개발자들이 배워보고 싶어 하는 툴!) + 실습
도커 공식 문서: https://docs.docker.com/get-started/overview/

애플리케이션 컨테이너화

  1. 특정 환경에서 소스코드, 에셋, 라이브러리 파일 등으로 애플리케이션을 빌드한다.
  2. 빌드한 애플리케이션의 스냅샷을 찍는다.
  3. 만든 스냅샷을 클라우드에 업로드한다.
  4. 애플리케이션을 실행할 컴퓨터에서 스냅샷을 내려받아 실행한다.

그러니까 node.js 서버를 배포한다고 하면, 위 그림의 파란 글씨처럼 node v.16에서 내가 적은 App.js를 빌드한 상태를 스냅샷으로 찍는 것이다. 이 때 node package와 asset 폴더에 있는 이미지 등도 함께 들어가게 된다. 이 때, 애플리케이션을 실행할 컴퓨터에는 컨테이너화된 애플리케이션을 실행할 수 있는 환경이 갖추어져야 한다. 이를테면 도커가 설치되어 있어야 한다.

VM과 컨테이너화는 다르다.

  • 공통점: Host OS에서 프로그램을 격리시켜 실행할 수 있다.
  • 차이점: VM 1개에는 OS 1개가 들어가지만 컨테이너 1개에는 OS가 들어가지 않는다.

장점

  • 실행 환경, 의존성 등을 신경쓰지 않고 어느 컴퓨터에서든 똑같은 상태의 애플리케이션을 실행할 수 있다.
    • 즉, 분산 컴퓨팅을 매우 편리하게 만들어준다.
  • 가볍다. OS 단위가 아닌 애플리케이션 단위로 묶기 때문이다.

Docker

  • 애플리케이션 컨테이너화 플랫폼 중 가장 많이 사용되는 오픈소스 프로젝트.

도커 구성 요소

  • 도커 파일: 도커 이미지를 빌드하기 위해 필요한 스크립트.
  • 이미지: 도커 컨테이너를 만들기 위한 immutable 템플릿. 도커 파일을 사용해 이미지를 만든다.
  • 컨테이너: mutable한 이미지의 인스턴스. 도커에서 컨테이너를 생성, 시작, 중단, 이동, 삭제한다.

사용 팁

DockerFile 작성 팁

  • 변경이 잦은 부분일수록 아래쪽에 작성한다.
    • 도커 이미지는 레이어로 구성된다. 레이어 하나는 도커 파일에 작성된 명령어 한 줄에 대응된다. 도커 이미지 생성 시 레이어를 스택으로 쌓기 때문에, 변경이 잦은 부분일수록 스택의 위쪽에 위치시키면 빌드 타임을 줄일 수 있다.
  • 이미지 빌드를 위한 명령어와 컨테이너 실행 직후 실행하기 위한 명령어를 따로 지정할 수 있다.
    • 즉, 도커 이미지 빌드 시에는 말 그대로 애플리케이션 빌드까지만 하고, 애플리케이션을 실행하는 코드는 ENTRYPOINT ["npm", "start"] 와 같은 명령어를 사용해서 지정한다.
profile
코드도 적고 그림도 그리고 글도 씁니다. 넓고 얕은 경험을 쌓고 있습니다.

0개의 댓글