1. Docker 소개

·2023년 4월 27일
0

1. Docker 소개

Docker?

Container 기반의 오픈소스 가상화 플랫폼
OS가 아닌 container 단위로 실행 환경의 가상화를 제공한다.

이를 통해 프로그램을 container로 추상화해 배포 및 관리를
단순하고 효율적으로 할 수 있게 한다.

Docker는 Linux 운영체제 위에서 동작할 수 있다.

현재 사용하는 os가 Linux가 아니더라고, 가상 머신 또는 WSL 등으로 Linux를 구동할 수 있다면 docker를 사용할 수 있다.

Docker 장점

  • 애플리케이션이 실제로 동작하는 환경을 가상화 및 격리할 수 있다.
  • 즉, 하나의 컴퓨터(os) 위에서 서로 간섭하지 않는 여러 개의 환경을 구성할 수 있다.
  • 프로젝트마다 os 단위의 가상 머신을 사용할 필요가 없다.
  • 개발 환경의 설정을 미리 만들어두고, 대상 컴퓨터에 복제해 빠르게 초기 개발 환경을 구축할 수 있다.

Docker 가상 환경

  • 가상 컴퓨팅은 os 위에서 또 다른 os를 구동해 물리적 자원을 분할하여 사용하기 때문에 추가적인 오버헤드가 생긴다.

  • 하지만 docker는 os를 새롭게 구동하지 않고, docker 엔진 위에서 각각의 container를 통해 실행 환경만 독립, 분할 하므로 더 좋은 성능을 보여준다.

Layer

  • 프로그램을 구성하는 file/folder로 이루어진 모듈의 단위
  • 읽기 전용(Read Only), 불변성(Immutable)의 특징을 지닌다.
  • 고유 ID를 갖고 있다.
  • 한마디로, Layer란 프로그램을 이루는 파일 및 폴더들의 집합

Image

  • 프로그램을 실행하기 위한 파일들을 각각 원하는 설정, 원하는 버전으로 구성하여 이미지라는 형태로 저장

  • 하나의 이미지는 여러 개의 레이어로 구성되어 있다.

  • 동일한 프로그램이라도 레이어를 추가하거나 제거해 서로 다른 버전을 가진 이미지로 구성할 수 있다.

  • 서로 다른 이미지가 동일 레이어를 사용한다면, 중복해서 저장하지 않고 해당 레이어를 공유하는 방식을 이용한다. (공유 파일 시스템, Union File System)

  • Dockerfile 파일에 고유 문법을 통해 이미지 생성 과정을 정의할 수 있다.

  • 이미지는 실행 가능한 프로그램 단위, 레이어들의 집합

  • 예를 들어 Docker에서 Python,NodeJS,MySQL 등은 이미지 형태로 받아 사용할 수 있다.

출처
https://rito15.github.io/posts/introduction-to-docker/

0개의 댓글