도커를 시작하기에 앞서 알아야 할 개념들이다
컨테이너란?
하나의 코드패키지이다. 우리가 만든 프로그램의 코드와 그 코드를 실행하기 위한 도구가 포함된 박스라고 보면 된다!
이런 컨테이너라는 박스 안에 코드들이 들어가 있는 것이다.
이런 컨테이너를 사용하였을때 몇가지 장점이 있다
1. 버전관리에 용이하다
예를 들어, 개발할때 구버전에서는 작동하지 않는 코드가 있을 수 있다 이때 컨테이너를 이용하여
컨테이너에 신 버전을 고정하여 해결이 가능하다.
2. 협업에 있어서 용이하다.
회사에서 각각의 개발환경이 다를 수 있는데, 이때 버전 충돌이 일어날 수 있다. 하지만 컨테이너를
이용하여 해결 가능하다. 또한 컨테이너를 이미지화 하여 공유와 다운로드가 쉽다.
3. 리소스 사용면에서 효율적이다.
컨테이너를 사용하지 않는 경우,
1. 호스트OS위에 버추얼 머신을 설치한다.
2. 버추얼머신 위에 가상 OS를 올린다.
3. 그 위에 필요한 어플리케이션을 올린다.
즉, 이런 그림이 된다
그림을 보면 여러 가상머신이 올라갈때마다 중복되는 이 많은 것을 볼 수 있다
예를 들어 게스트OS로 리눅스가 올라가게 된다면 리눅스가 3번이나 중복 설치되는 것이다
즉, 리소스의 낭비, 시간낭비가 된다. 하지만 컨테이너를 쓴 경우에는 다르다
컨테이너는 호스트 OS위에 컨테이너를 제어할 도커엔진이 올라가고, 그 위에 컨테이너들이 올라가게 된다
즉, 다음과 같은 그림이 된다
그림 B 를 보면 그림A에 비해서 훨씬 중복되는 것이 적다는 것을 볼 수 있다.
도커라는 엔진 위에 각각의 필요한것만 들어있는 컨테이너 들이 올라와 있는 것이다
쉽게 정리하면 다음과 같다.
컨테이너 | 가상머신 |
호스트 OS에 미치는 영향이 적다 | 호스트OS에 많은 영향을 미친다 |
속도가 매우 빠르다 | 속도가 느리다 |
최소한의 디스크 사용 | 디스크를 많이 차지함 |
공유, 재구축, 배포가 쉽다 | 공유, 재구축, 배포가 가능하지만 어렵다 |
필수적인 앱과 환경을 보유하며, 쓸데없는것이 없다 | 필수 요소 뿐만 아니라 필요없는것까지 캡슐화를 한다 |
즉. 리소스 효율적이다 라는 말은 여러 뜻을 가진다
1. 필요한 것만 있기에 용량을 적게 차지
2. 용량이 적기 때문에 구축 시 소요되는 시간 감소
3. 용량이 작기 때문에 호스트에 주는 부담 감소
4. 부담이 감소되는 만큼 더 많은 컨테이너를 욱여넣을 수 있음
등등.....많은 장점을 가진다
이미지란?
컨테이너를 만들기 위한 청사진(설계도면)이다. 코드, 설정 등 다양한 것이 명시되어 있다.
이 이미지란 청사진을 바탕으로 컨테이너라는 코드패키지를 구축하는 것이다!
운영체제는 무엇인지, 필요한 환경은 무엇인지, 설정은 어떻게 할 것인지 들이 들어있다.
예를 들어,
운영체제 | Linux |
어플리케이션 | Nginx |
개방할 포트 | 80 |
다음과 같을 때 이미지에는 이 모든 설정과 코드들이 한장의 이미지에 들어가 있는 것이다.
이렇게 이미지화를 하였을 때 공유, 배포가 매우 쉬워진다
누군가가 위의 예시처럼 똑같은 설정이 필요하다 하였을 때, 난 그냥 저 이미지를 주고,
받은사람은 그 이미지를 토대로 구축만 하면 끝난다!
핵심
1.컨테이너는 리소스 효율적이다.
2.이미지화 하기 때문에 공유, 배포, 구축이쉽다.
'Docker' 카테고리의 다른 글
Docker 설치 (0) | 2024.11.20 |
---|---|
Docker (0) | 2024.11.19 |
Docker volume에 대하여(익명, 네임드, 바인딩) (0) | 2023.09.01 |
도커로 컨테이너끼리 통신하는법 (0) | 2023.08.28 |
도커 Nginx 올리기 (0) | 2023.08.28 |
댓글