DevOps/Docker

[Docker] Docker 동작 원리

JiWonSon 2023. 7. 12. 17:56

1. Docker의 구조

물리서버 > 리눅스 운영체제 > 도커 엔진 > 컨테이너

출처 : 그림과 실습으로 배우는 도커&쿠버네티스 -오가사와라 시게타카

도커와 컨테이너는 서버에서 사용되며,

위 그림과 같이 운영체제 위에 도커가 위치해있다. 또, 그 도커 위에 컨테이너가 위치해있다.

 

우선 컨테이너 안에는 어떤 구조로 되어있을까?

모든 컨테이너는 '리눅스 운영체제 비슷한 무언가'가 들어있다.

 

본래 운영체제는 '커널'과 '그 외 주변 부분'으로 이루어져있는데, 이 컨테이너 안에 '그 외 주변 부분'이 들어있는 것이다.

 

- 도커와 컨테이너는 완전히 분리되어 있어서 밑바탕인 리눅스 운영체제의 주변 부분이 컨테이너 속 프로그램 명령을 직접적으로 전달을 주고 받을 수 없다. 무조건 도커 엔진을 커져야 한다.

 

- 이처럼 그 외 주변 부분만 컨테이너가 담고 있고, 커널은 밑바탕에 있는 것들을 빌려 쓰는 형태이기 때문에 도커는 '가볍다'는 특징을 가진다.

 

- 도커는 '리눅스' 운영체제에서만 동작할 수 있으므로, Windows, MacOS에서는 Hypervisor를 설치하여 VM으로 리눅스 운영체제를 생헝하여 설치하는 등 도커를 실행하는데 필요한 리눅스 운영체제가 꼭 필요하다. (아래 그림 참조)

 

 

출처 : 그림과 실습으로 배우는 도커&쿠버네티스 -오가사와라 시게타카

2. Docker 허브와 이미지, 컨테이너

도커 이미지 :  컨테이너를 만드는 틀

도커 허브 : 인터넷 상에 도커 이미지를 모아놓은 곳

 

 

구체적으로, 이미지는

- 컨테이너의 설계도 역할을 담당한다.

- 이미지를 사용하면 컨테이너를 여러개 생성하는 것이 가능하다.

- 이미지로 컨테이너를 생성하는 것이 가능하고, 컨테이너로 이미지를 생성하는 것이 가능하다.

 

 

- 컨테이너는 도커 엔진만 설치되어 있으면 구동이 가능하여 다른 서버에 도커 엔진을 설치하고 새로운 도커 엔진에 이미지를 올리면 똑같은 컨테이너를 생성할 수 있다. (아래 그림 참조)

출처 : 그림과 실습으로 배우는 도커&쿠버네티스 -오가사와라 시게타카

 

- 공개된 컨테이너 이미지가 모여 있는 '도커 허브'란 곳에서 원하는 컨테이너 이미지를 다운받을 수 있으며, 누구든지 이미지를 등록하고 사람들과 공유할 수 있다.

 

- 도커 허브에서는 리눅스 배포판들의 버전별 이미지를 포함하여, 소프트웨어 회사에서 제공하는 공식 컨테이너 이미지(Apach, MYSQL, ...)도 다운할 수 있다.

 

- 도커를 사용하여 각각의 소프트웨어를 구성하여 구축한 예시 (한 컨테이너에 모두 집어넣거나, 별도의 컨테이너로 구성할 수 있다.)

 

출처 : 그림과 실습으로 배우는 도커&쿠버네티스 -오가사와라 시게타카

- 도커를 사용할 때 '한 컨테이너에 한 프로그램'이라는 원칙이 있다. 보안과 유지 관리 측면에서 유리하기 때문이다. 

 

 

 

i) 운영체제? 소프트웨어나 프로그램의 명령을 하드웨어에 전달하는 역할

'DevOps > Docker' 카테고리의 다른 글

[Docker] Docker를 왜 사용할까  (0) 2020.12.12