docker/docker 개념 및 이해

container 기술 및 docker 개념

infra 2021. 12. 1. 17:49

1. container 기술의 흐름 및 변화

 

과거의 컨테이너 기술

 

FreeBSD = open source unix의 freeBSD JAIL

sun microsystems(=oracle에 합병됨) 상용 unix Solaris의 Containers(Zone)

Linux = Linux Container 라는 LXC

google= lmctfy(=Let Me Contain That For You)


과거의 LXC 기술이 잘 활용되지 않은 이유는 LXC의 cgroup과 namespace 등의 사용 복잡하고 어려웠기 때문에 활용하지 않음.

 

현재의 컨테이너 기술

DOcker 를 통해 App의 LXC를 사용하고, 사용자는 도커 명령어를 활용해서 컨테이너 기술을 사용하게 함


2. 가상머신 vs 컨테이너 비교

 

1)가상 머신방식

App = application

Bins = binary  / Lib = Library

 

Guest OS = Host OS단에서 여러 개의 OS를 만들 수 있다.

 

Host OS = Guest OS 의 집합이라 생각하면 되며, 예를 들어 vmware workstation, virtual box 의 개념이라 생각하면 된다. 보통 노트북의 OS는 win7,10,11 이지만, 이에 해당하는 낱개의 개별적인  guest OS는 여러 개의 리눅스 윈도우 서버등을 만들 수 있다.

 

HyperVisor = 공유 컴퓨팅 자원을 관리하고 가상머신들을 control(I/O 명령 처리)하는 중간 관리자

특정서버의 BIOS 를 설정해주는 구간

 

 

 

2)컨테이너 방식

 

해당 host OS의 자원(CPU,memory, .. 등등)을 나누어서 사용하게 됨.

자체 Host OS의 kernel을 컨테이너가 공유 받음

 

Host OS=Operating System 위의 그림과 같이 container engine을 설치 -> container engine 위에 컨테이너를 만드는 것임.

 

방식 가상 머신 컨테이너
가상하드웨어 가상 하드웨어를 만드는 개념이며,
Host OS의 BIOS에서는 CPU 가상화 설정이 필요함


만들지 않음
(BIOS에서 CPU 가상화 설정을 할 필요 없음)
BIOS 설정 있다
=>물리적 서버를 활용
없다
->
BIOS 나 booting 설정 OS 설정의 방법이 따로 필요 없음
성능 무거움 가상화보다는 overhead가 적어서 가벼움
목적 가상화기술
서로 다른 환경을 어떻게 효율적으로 emulate 할지를 지향
컨테이너 기술
application의 실행환경을 모아서 이식성을 높임, 확장성이 좋은 환경에서 작동하는 것을 지향

 

해당 내용은 docker process에 있는 컨테이너에 접속해서 커널 버젼을 확인한 명령어이고,

나머지 host OS 의 커널 버젼을 확인한 명령어이다. 그래서 서로 커널버젼은 동일한것을 알 수 있다.


도커에서의 명령어를 수행하기 위한 옵션 등의 개념과, 

Dockerfile,  image , registry , container,  등의 개념을 파악하기 위한 도식화 그림은 다음과 같다.

 

 

 

docker 구성요소

 

다음과 같은 구성요소와 이러한 것들이 조합되어 application 실행 환경을 구축한다.

 

 

도커 구성요소
docker engine 도커 이미를 생성 및 컨테이너를 기동한다.
-docker 명령어와 Dockerfile 이미지 생성도 수행함
docker registry 이미지 공개 및 공유하는 기능
-container 의 바탕이 되는 도커 이미지를 공개 및 공유하기 위한 registry 기능
-docker 공식 registry인 docker hub(http://hub.docker.com)도 
이 도커 레지스트리를 사용한다.
docker compose 여러 컨테이너 통합 관리
-여러 개의 컨테이너 구성 정보를 코드로 정의하고,
명령어를 실행함으로서 application 실행환경을 구성하는 컨테이너의 일원화 관리할 수 있는 툴
Docker Machine 도커 실행 환경 구축
-localhost 용의 virtualbox, workstation 뿐만 아니라, AWS EC2, MS azure 같은 클라우드 환경에 docker 실행환경을 명령어로 자동 생성하기 위한 툴
Docker Swarm -여러 도커 host 들의 클러스터화 하는 툴
(대개 5개 ~이상으로 가능함)
-클러스터를 관리하거나 api를 제공하는 역할=manager
-도커 컨테이너 실행하는 역할 = node