• toc {:toc}

Docker Overview

  • Docker Edition Community Edition 개인 개발자, 작은 팀을 위해 Enterprise Edition 기업 개발, IT 팀을 위해 고안

  • Docker는 무엇인가?

  • CLI(Commend line interface), GUI를 통해서 도커 엔진에 명령을 보낸 것이다.

  • GUI는 무겁기 때문에 서버에서 많이 사용하지 않는다.

  • ssh를 통해서 원격 접속하여 CLI를 통해 사용한다.

  • Docker Engine은 무엇인가?

image

  • Docker Daemon 서버

    • API 요청들을 듣고 Docker object들을 관리한다. 다른 daemon들과 소통한다.
  • Docker Client (CLI, GUI를 이용해 도커를 사용하는 사용)

    • CLI 도커 엔진에 대한 instruction을 제공한다.
    • 웹의 클라이언트-서버 아키텍쳐와 유사하다. (remote server)
      • 서로 상호작용
    • 클라이언트가 엔진에게 컨테이너 일을 수행하도록 요청한다.
    • 도커 클라이언트는 하나 이상의 daemon과 소통할 수 있다. 둘 사이의 소통을 어떻게 할 것이냐 rest api를 이용한다. rest api(함수 호출)
  • rest api 서버에 데이터를 요청하고 받아올 수 있도록 하는 api

    • CRUD(Create, Read, Update, Delete) 연산을 수행하기 위해 URI로 get, post등 요청을 보내면 자원은 특정한 형태로 표현된다.
  • restful api 실질적으로 구현 가능한 것? 컴퓨터와 컴퓨터가 http라는 프로토콜을 사용해 함수호출하듯 요청하면 그에 따른 응답을 돌려주는 형식

  • Docker registries

  • 도커 이미지를 저장한다.

  • Public registry

    • 모두가 사용가능하다. Docker Hub & Docker Cloud
  • Private registry

    • Docker Trusted Registry (DTR)
  • Docker Ecosystem

  • 이미지를 만든 것에 대해 도커 허브에 올리나, 코드는 올리지 않는다. 코드는 git system에 올린다.

  • 개발 하드웨어에 host os, container system

  • 코드와 Dockerfile (코드)는 git system에 올린다.

  • 이미지인 경우에는 컨테이너 리포, 이미지 리포에 올린다.

Docker Underlying Technologies

  • Go 언어를 통해 만들어졌다.
  • 컨테이너는 가상머신과 다르다.
  • 도커는 명령을 수행한다. 명령에 따라 다르다. 명령을 어떻게 주는가에 따라서 지속될지, 한순간 끝날지 결정된다. 다음이 가상머신과 다르다. 하지만 가상머신과 유사한 특징을 갖는다.
  • 리눅스 커널 특징들의 장점을 갖는다.
    • Namespaces
      • 이름을 구분한다.
      • 두개의 컨테이너를 사용할 때 하나의 물리적인 자원을 논리적으로는 둘이 각각 따로 사용하는 것처럼 만들 수 있다.
      • 가상머신인 것처럼 쓸 수 있게 하지만 가상머신은 아니다.
      • 각자의 컨테이너가 분리되고 제한된 접근을 갖는다.
    • Control group
      • 도커를 사용해 특정 컨테이너가 이용가능한 메모리를 제한할 수 있다.
      • 공유하며 사용할 수 있는 하드웨어 자원을 컨테이너가 제한적으로 사용하도록 설정할 수 있다.
    • Union file systems
    • Container format