TIL # 48 Docker

강경훈·2020년 11월 1일
0
post-thumbnail

1. Docker 란?

도커는 컨테이너 기반의 오픈소스 가상화 플랫폼이다.

컨테이너라고 하며 배로 화물을 운송 할 때 운송품들을 나르기 위한 철로된 큰 상자를 얘기하는 데 여기서도 비슷하다.

다양한 프로그램, 실행환경을 추상화하고 이를 컨테이너에 담아 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해준다.

백엔드 프로그램, 데이터베이스 서버, 메시지 큐등 어떤 프로그램이든 컨테이너 담을 수 있게 하며, 한 개 또는 여러 개의 컨테이너들을 실행 할 수 있고, 로컬PC, AWS, Azure, Google cloud등 어디에서든 실행할 수 있다

구글은 2014년 발표 에 따르면 구글은 모든 서비스들이 컨테이너로 동작하고 매주 20억 개의 컨테이너를 구동 한다고 한다

2. Docker vs Virtual machine

Docker

OS 부분을 가상화하고 docker 엔진 위에 컨테이너들을 띄운다

  • 장점
    - 차지하는 volum이 작다
    - 속도가 빠르다
    - image 파일 하나로 업데이트와 배포가 쉽다

Virtual machine

가상화 된 하드웨어 위에 os를 직접 설치 하여 프로세스 실행

  • 장점
    - 커널을 공유하고 있는 docker보다 보안에서 강하다
    - 시스템 환경에 맞는 os를 선택 가능하다.
    (현재 docker는 ubuntu(Linux)기반으로 이루어져 있다.)

3. 기본 개념

  • Dockerfile : image을 파일을 만들기 위한 파일이다. 어떠 프로젝트를 이미지화 할건지, 어떤 환경과 라이브러리 필요한지를 이 파일 통해 정해진다.
  • image : Dockerfile을 이용해 만드는 파일. 실제 container에 담기는 파일이다.
  • container : image 파일을 담고 있으며, 다른 컨테이너(환경)들과 완전히 분리된 공간이다.
  • compose : multi-container 기능. 여러 환경의 컨테이너들을 함쳐 하나의 프로세를 돌리는 기술.
profile
방랑하는 개발자

0개의 댓글