- 도커란?
도커란 어플리케이션을 패키징 할 수 있는 툴이다.
컨테이너라고 불리는 소프트웨어 유닛 안에 어플리케이션과 그에 필요한 시스템툴, 리소스들, 환경설정, 환경변수 등 모든 디펜던시를 하나로 묶어서 다른 서버, 다른 pc 등 어떤 곳에도 쉽게 배포하고 안정적으로 구동할 수 있게 도와주는 툴이다.
한마디로 어플리케이션을 구동하는 데에 필요한 런타임 환경에 필요한 모든 것들을 어떤 pc 에서도 동일하게 구동할 수 있도록 도커 컨테이너 안에 담을 수 있다.
도커 - 컨테이너를 만들고, 배포하고, 구동한다.
컨테이너를 만들기 위해서는 세가지가 필요하다.
먼저 도커파일을 만들어야 한다.
어플리케이션을 구동하기 위해 꼭 필요한 파일들, 어떤 프레임워크나 라이브러리를 설치해야 하는지, 외부 디펜던시에 대해서 명시할 수 있고, 필요한 환경변수를 설정할 수 있고, 어떻게 구동해야 하는지 스크립트도 포함할 수 있다.
이렇게 작성한 도커파일을 이용해서 이미지를 만든다.
이미지 안에는 어플리케이션을 실행하는 데에 필요한 코드, 런타임환경, 시스템 툴, 시스템 라이브러리, 모든 세팅들이 포함되어 있다.
이렇게 만들어진 이미지는 변경이 불가능한 불변의 상태이다.
객체지향에서 클래스의 개념과 비슷하다.
마지막 단계인 컨테이너는 이미지를 고립된 환경에서 개별적인 파일 시스템 안에서 실행할 수 있는 것을 말한다.
컨테이너 안에서 어플리케이션이 동작한다고 보면 된다.
컨테이너에서 각각 동작하는 어플리케이션은 파일 생성, 수정 등 각각의 설정이 가능하다.
각각의 컨테이너에서 수정된 파일들이 있어도 이미지에는 영향을 끼치지 않는다.
컨테이너는 객체지향에서 인스턴스의 개념과 비슷하다.
배포하기 - 로컬 머신(pc)에서 이미지를 생성해서 컨테이너 레지스트리(깃허브같은 개념)에 내가 만든 이미지를 푸시하고 필요한 서버나 다른 개발자 pc 에서 내가 만든 이미지를 가지고 와서 실행하면 된다.
정상적으로 실행하기 위해서는 그 pc 에 도커와 같은 컨테이너 엔진을 설치해두어야 한다.
- 가상머신(vm)과 도커의 차이?
가상머신은 하드웨이 인프라스트럭쳐 위에 vm웨어나 버츄얼박스같은 hyperviser 소프트웨어를 사용하여 각각의 가상머신을 만들 수 있다.
한 운영체제 위에서 어플리케이션을 각각의 고립된 다른 환경에서 구동하기 위해서 가상머신을 이용하여 구동해야 했다.
가상머신은 각각의 운영체제를 포함하고 있기 때문에 맥에서 vm 을 이용하면 윈도우와 리눅스를 동시에 구동할 수 있다.
이렇게 vm 을 사용하면 운영체제를 포함하고 있기 때문에 굉장히 무겁고 시작하는데도 오래걸리고 운영체제의 인프라스트럭쳐 리소스를 많이 잡아먹는다.
때문에 이 vm 에서 조금 경량화 된 컨셉이 container 이다.
컨테이너는 하드웨어에 설치된 운영체제(호스트 os) 에서 컨테이너 엔진이라는 소프트웨어를 설치만 하면 개별적인 컨테이너를 만들어서 각각의 어플리케이션을 고립된 환경에서 구동할 수 있다.
컨테이너는 운영체제를 포함하지 않고 컨테이너 엔진이 설치된 host os 를 공유하기 때문에 가볍다.
컨테이너가 구동되기 위해서는 컨테이너 엔진이 필요하고 엔진이 호스트os 에 접근해서 필요한 것들을 처리해준다.
이 컨테이너 엔진중에 가장 많이 이용되는 것이 도커이다.
'기술 개념' 카테고리의 다른 글
객체와 클래스, 쿠키와 세션, 오버로딩과 오버라이딩, 싱글톤패턴, 접근제어자 (0) | 2023.03.12 |
---|---|
데이터베이스 개념 (0) | 2023.03.12 |