- toc {:toc}
Docker Overview
-
Docker Edition Community Edition ⇒ 개인 개발자, 작은 팀을 위해 Enterprise Edition ⇒ 기업 개발, IT 팀을 위해 고안
-
Docker는 무엇인가?
-
CLI(Commend line interface), GUI를 통해서 도커 엔진에 명령을 보낸 것이다.
-
GUI는 무겁기 때문에 서버에서 많이 사용하지 않는다.
-
ssh를 통해서 원격 접속하여 CLI를 통해 사용한다.
-
Docker Engine은 무엇인가?
-
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
- Namespaces