프로젝트

일반

사용자정보

Actions

Docker

  • 컨테이너 기반의 오픈소스 가상화 플랫폼
  • 도커는 LXC기반으로 시작하여 0.9 version에서는 자체 libcontainer기술을 사용하였고, 추후 runC기술에 합쳐졌다.

1) 컨테이너의 정의

  • 개별 소프트웨어의 실행에 필요한 실행환경을 독립적으로 운용할 수 있도록 기반환경 또는 다른 실행관경과의 간섭을 막고 실행의 독립성을 확보해주는 운영체계 수준의 격리 기술을 말합니다.

2) 가상머신과 컨테이너의 유사점

  • 호스트 운영체제에서 구동되며 그 바탕이 되는 하드웨어에 가상으로 액세스하는 Linux, Windows 등의 게스트 운영체제를 의미
  • 애플리케이션을 관련 라이브러리 및 종속 항목과 함께 패키지로 묶어 소프트웨어 서비스 구동을 위한 격리 환경을 마련해 줌

3) Container 기반 가상화 vs Hypervisor 기반 가상화

Hypervisor Container
호스트 운영체제와 격리 완전 격리 부분 격리
필요한 리소스 커널, CPU, 메모리, 스토리지 등 앱에 필요한 서비스만 포함
게스트 호환성 가상 머신내의 운영체제 호스트와 동일한 운영체제
배포 VM배포 Container배포

4) Docker의 구조

Client Docker Host Registry
Docker Build Docker daemon NGINX 등
Docker Pull Images
Docker Run Containers
  • Client : user가 'docker run'등의 명령어를 입력하면 이를 Server쪽에 전송하고, Docker daemon이 수행한다.
  • Docker daemon : docker api 요청을 수신하고 image, container, network, volume과 같은 docker object를 관리한다. 다른 docker daemon과의 통신을 통해 서비스를 관리할 수 있다.
  • Docker Registry : Docker 이미지 저장소이다.
  • Image : 컨테이너 실행에 필요한 파일과 설정값 등을 포함하고 있다. 공식 이미지의 경우 해당 이미지를 실행하기 위한 모든 것이 세팅되어 있다.

5) Docker의 특징

  • 레이어 저장방식
    • Docker Image는 컨테이너를 실행하기 위한 모든 정보를 가지고 있기 때문에 용량이 크다. 이런 문제를 해결하기 귀해서 Layer라는 개념을 사용하고 유니온 파일 시스템을 이용하여 여러개의 레이어를 하나의 파일시스템으로 사용할 수 있게 해준다.
    • 컨테이너를 생성할 때도 레이어 방식을 사용하여 기존의 이미지 레이어 위에 읽기/쓰기(read-write) 레이어를 추가한다.
  • Dockerfile
    • Docker는 image를 만들기 위해 Dockerfile이라는 파일에 자체 DSL 언어를 이용하여 이미지 생성 과정을 적는다.
    • Application 실행에 필요한 과정들을 Dockerfile로 작성하여 관리할 수 있으며, 해당 Dockerfile을 보면서 이미지 생성과정을 알 수 있으므로 수정하기도 용이하다.
  • Docker Hub
    • Docker hub를 통해 공개 이미지를 무료로 관리해준다. 공식 이미지를 직접 관리해주며, namespace가 없다.

이태훈이(가) 3년 이상 전에 변경 · 1 revisions