Docker

[Docker] 도커란? (What is Docker)

nang. 2020. 3. 23. 01:19
반응형
SMALL

What is Docker

컨테이너형 가상화 기술을 구현하기 위한 dorkerd 라는 데몬(상주 어플리케이션)과 이 데몬을 조작하기 위한 명령행 도구(CLI;커맨드)로 구성되는 프로덕트

  • 도커 허브 & 도커 클라우드
    • 컨테이너를 인터넷에서 공유하는 메커니즘
  • 프로덕트
    • 도커 허브, 도커 클라우드 및 주변 컨테이너를 활용하기에 좋은 생태계를 포함하는 의미

1. Docker

1.1 Docker 란 무엇인가?

소프트웨어 컨테이너 안에 응용 프로그램들을 배치시키는 일을 자동화해주는 오픈소스 프로젝트이자 소프트웨어

  • 컨테이너를 감싸고 있는 것
  • 컨테이너에 프로그램들을 자동으로 배치시켜주는 것
  • 리눅스 기반이지만 완벽히 리눅스 운영체제와 같은 구성은 아님
  • 컨테이너형 가상화 기술을 사용
    • 운영체제 수준 가상화라고도 함
    • 호스트OS 의 리소스를 격리해서 가상 운영체제로 만들 수 있는 것!

1.2 Docker의 특징

  • 호스트 운영체제의 영향을 받지 않는 실행 환경
    • Docker Engine을 이용하여 실행 환경을 표준화 시킴
  • Dockerfile
    • 컨테이너 정보를 담은 코드 파일
    • 이 코드 파일을 기반으로 컨테이너 복제(이동)나 배포가 이루어지기 때문에 재현성이 높음
  • 이미지 버전 관리가 가능
  • 도커 레지스트리 존재
    • 이미지 저장 서버 역할
  • 프로그램 가능한 다양한 기능의 API 제공

2. Docker Container

2.1 Container 란 무엇인가?

2.2 Docker Container 란 무엇인가?

Docker 안에 생성되는 컨테이너

Docker가 만들어내는 게스트 OS 같은 것 = 호스트OS 의 리소스를 격리해서 가상 운영체제로 만든 것

즉, 어플리케이션 구동을 위한 _가상 개발 환경_을 만든 것

  • 어플리케이션 구동에 필요한 라이브러리, 미들웨어 등이 이미 갖춰진 테스트용 가상환경
    • 라이브러리, 미들웨어 등을 패키징한 것이 담긴 것(박스)
    • 어플리케이션 구동을 위한 _가상 개발 환경_을 만든 것
    • 필요한 부분만 따로 떼어 가상화 구현할 수 있도록 하는 것
    • 즉, Docker 위에 컨테이너를 여러개 만들어 각각의 환경을 다르게 만들고 각각의 환경에 따른 어플리케이션을 개발할 수 있는 것!
  • 애플리케이션을 배포하는 목적에 특화된 박스라고 생각하자

docker_engine

2.3 Docker Container 특징 (장점)

  • 조작이 간편하다.

  • 경량 컨테이너여서 가볍게 동작한다.

    • 그래서 이식성이 뛰어나다.
      • 내 로컬의 Docker에서 실행하던 컨테이너를 짝꿍 컴퓨터 서버에 있는 Docker 환경에 배포할 수 있고 가져올 수도 있다.
      • 개발 환경과 운영 환경을 거의 동등하게 재현할 수 있다.
        • 내가 개발하던 환경이나 내가 운영하던 환경을 다른 곳에서도 거의 동등하게 재현할 수 있다는 의미이다.
  • 애플리케이션 배포에 특화돼 있기 때문에 애플리케이션 개발 및 운영을 컨테이너 중심으로 할 수 있다.

  • 조건이 다른 여러 머신 환경에 일관성 있게 사용할 수 있는 컨테이너 이미지 생성이 가능하다.

  • 개발 환경 구축 뿐만 아니라 개발 후 운영 환경에 대한 배포나 애플리케이션 플랫폼으로 기능할 수도 있다.

    • VMware 사용과 다른 점
  • 컨테이너를 만들면서 발생하는 오버헤드가 다른 가상화 소프트웨어에 비해 적다.

2.4 Docker + Docker Container의 단점

  • 리눅스 기반이지만 리눅스 운영체제의 동작을 완전히 재현하지는 못하므로 리눅스 운영 체제의 동작이 엄밀하게 요구되는 가상 환경을 구축해야 한다면 하이퍼바이저(VMware)를 사용하는 것이 낫다.

3. IMAGE (이미지)

시스템과 서비스에 필요한 코드를 모아둔 최소한의 단위

  • 시스템과 서비스를 가지고 운영되는게 컨테이너

  • 즉, 이미지(코드)를 기반으로 운영되는 컨테이너이기에 Docker가 설치되어 있다면 Docker Image는 Docker 위에서 컨테이너를 작동시킬 수 있음

    • 이미지 = 붕어빵 틀
    • 컨테이너 = 붕어빵
  • 이미지 관련 명령어

반응형
LIST