미소의 세상

Docker 란? 본문

기타

Docker 란?

짱미소 2022. 10. 13. 10:41

도커(docker)란?


리눅스의 응용 프로그램들을 소프트웨어 컨테이너 안에 배치시키는 일을 자동화하는 오픈 소스 프로젝트이다.

도커 웹 페이지의 기능을 인용하면 다음과 같다: 도커 컨테이너는 일종의 소프트웨어를 소프트웨어의 실행에 필요한 모든 것을 포함하는 완전한 파일 시스템 안에 감싼다. 

 

다시말해서 도커는

 

"애플리케이션을 신속하게 구축하고 테스트 및 배포할 수 있는 소프트웨어 플랫폼" 이라고 할 수 있으며,

소프트웨어를 컨테이너라는 표준화 된 유닛으로 패키징하며 이 컨테이너에는 라이브러리/시스템도구 등 S/W를 실행하는 데 필요한 모든 것이 포함되어 있다

 

또한 환경에 구애받지 않고 애플리케이션을 신속하게 배포 및 확장할 수 있고 기존 VM보다 퍼포먼스가 좋다

(기존 VM은 호스트에 의존적이라 성능저하를 불러일으킬 수 있음)

무엇보다도 도커는 "가볍다" 라는 것이 핵심인 듯 하다.

 

가볍다 라는 의미는 정확히 모르겠지만 이렇게 생각을 했다.

 

어떠한 목적을 위한 애플리케이션을 구축하려면 물리적으로든 가상머신으로든 서버를 구축해야 한다.

하지만 도커를 이용하면 목적1,2,3,4... 에 대한 애플리케이션을 구축하기 위해 별도의 서버를 생성하지 않고 간단한 명령어로 컨테이너 라는것을 생성하여 운영할 수 있고 생성/삭제 또한 간편하기에 가볍다 라고 불리우는 것 같다.

 

 

도커 이미지/컨테이너


도커엔진에서 사용하는 기본 단위는 '이미지와' '컨테이너' 이며 이 두 가지가 도커의 핵심이다.

 

● 도커 이미지

 

이미지는 컨테이너를 생성할 때 필요한 요소이다. (VM 생성 시 사용되는 iso 파일과 비슷한 개념)

여러개의 계층으로 된 바이너리 파일로 존재하고 컨테이너를 생성하고 실행할 때 Read-Only 로 사용된다.

 

즉 컨테이너 생성/실행에 필요한 모든 파일과 설정값을 지닌 것이다.(더 이상의 의존성파일을 컴파일하거나 이것저것 설치 할 필요 없는 상태의 파일을 의미)

 

 

ex) 데이터베이스 애플리케이션 서비스를 위한 mysql이미지는 mysql을 실행하기 위한 모든 파일을 가지고 있다.

 

이미지는 도커 명령어로 다운로드가 가능하므로 별도 설치할 필요는 없으며, 이미지의 종류는 OS, 애플리케이션 등 여러가지 종류들이 있다.

 

● 도커 컨테이너

 

도커 이미지로 컨테이너 라는 것을 생성하면 해당 이미지의 목적에 맞는 파일이 들어있는 파일시스템과, 격리된 시스템자원 및 네트워크를 사용할 수 있는 독립된 공간이 생성되는데 이것을 컨테이너 라고 한다.

 

대부분의 도커 컨테이너는 생성될 때 사용된 이미지의 종류에 따라 알맞은 설정과 파일을 가지고 있기 때문에 이미지의 목적에 맞도록 사용되는 것이 일반적이다.

 

컨테이너는 이미지를 Read-Only로 사용하기 때문에 이미지에서 변경된 사항들은 컨테이너 계층에 저장된다.

즉, 컨테이너 내부에서 무엇을 하던지 원본 이미지에는 영향이 1도 없다.

또한 생성된 각 컨테이너들은 독립된 파일시스템을 제공받으며 호스트와 분리되어 있으므로 설치/삭제 등의 작업 또한 호스트 혹은 다른 컨테이너에는 영향이 없다.

Comments