개발환경/Docker

[docker] 도커의 동작 원리

frances._.sb 2022. 7. 20. 13:58
728x90
  1. 도커의 구조

 - 일반적인 서버라면 운영체제 위에 프로그램이나 데이터가 직접 올라간다.

   도커를 사용하는 경우 운영체제 위에 도커 엔진이 동작하고 그 위에서 컨테이너가 동작한다.

 

 

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

 - 도커 엔진 아래에도 리눅스 운영체제가 있는데, 컨테이너 속에 또 리눅스 운영체제(비슷한 것)가 있다.

 

 

  • 운영체제가 하는 일?

 - 운영체제는 소프트웨어나 프로그램의 명령을 하드웨어에 전달하는 역할을 한다.

 

예를 들어, 사람 : "귤을 먹어라"  →  어려움 없이 명령 수행

          하드웨어 :  "테이블 오른쪽 상단에 위치한 귤을 손에 쥐고 껍질을 벗겨 알맹이를 먹어라"  →  구체적인 지시가 필요 (운영체제가 할 일)

 

 - '커널''그 외의 주변 부분' 으로 구성된다.

 

 

 

  • 구조 비교

* 일반적인 리눅스 컴퓨터

 

소프트웨어 → 주변 부분 (within 커널) → 하드웨어

 

* 도커

 

컨테이너 [ 도커 (within 소프트웨어 → 리눅스의 주변 부분) ]→ 도커 엔진 → 커널 → 하드웨어

 

 

 

 

    2. 이미지와 컨테이너

 

 - 컨테이너를 생성하기 위해 먼저 이미지를 만들어야 한다.

 - 이미지는 컨테이너를 찍어내는 '빵틀'과 같은 역할로, 컨테이너의 설계도 역할을 한다.

 - 우리가 실제 사용하는 것은 컨테이너이며 이미지를 그대로 사용하지 않는다.

 - 초보자가 이미지를 밑바닥부터 만들 일은 거의 없다. 

 

도커 허브 : https://hub.docker.com

 

Docker Hub Container Image Library | App Containerization

We and third parties use cookies or similar technologies ("Cookies") as described below to collect and process personal data, such as your IP address or browser information. You can learn more about how this site uses Cookies by reading our privacy policy

hub.docker.com

 여기서 공개된 이미지를 사용하면 된다.

 

 

 

 

    3. 도커 컨테이너의 생애주기와 데이터 저장

 

  • 컨테이너의 생애주기

 - 도커 컨테이너는 '오랫동안 아껴 쓰는' 물건이 아닌 '그때 그때 쓰고 버리는'  일회용품에 가깝다.

 - '만들고', '실행하고', '종료하고', '폐기한' 다음, 다시 컨테이너를 '만드는' 일련의 과정을 컨테이너의 생애주기라고 한다.

 

 

  • 데이터 저장

 - 폐기한 컨테이너의 데이터는 물론 삭제된다.

 - 이를 방지하기 위해 보통은 도커가 설치된 물리적 서버(호스트)의 디스크를 마운트해 이 디스크에 저장한다.

 

 

 

 

    4.  도커의 장단점

 

 

  • 장점

 - 한 대의 물리 서버에 여러 대의 서버를 띄울 수 있다.

 - 서버 관리가 용이하다.

 - 서버 고수가 아니어도 다루기 쉽다.

 

 

  • 단점

 - 리눅스 운영체제를 사용하는 기술이라 리눅스용 소프트웨어밖에 지원하지 않는다.

 - 물리 서버 한 대에 여러 대의 서버를 띄우므로 호스트 서버에 문제가 생기면 모든 컨테이너에 영향을 미친다.

 - 컨테이너 하나를 장기간에 걸쳐 사용할 때는 그리 큰 장점을 느끼기 어렵다.

 

728x90
반응형

'개발환경 > Docker' 카테고리의 다른 글

[Docker] 대표적 명령어  (0) 2022.09.27
[Dokcer] 컨테이너의 기본적 사용  (0) 2022.09.01
[docker] 도커 설치 및 오류  (2) 2022.07.26
[docker] 도커의 정의  (0) 2022.07.18