What is Container
휴대성을 극대화하는 한편, 소프트웨어를 실행하기 위해 필요로하는 파일, 변수, 라이브러리 등을 애플리케이션에 제공하는 경량의 런타임 환경
어플리케이션 구동을 위한 _가상 개발 환경_을 만든 것
즉, 라이브러리, 미들웨어 등을 패키징한 것이 담긴 것(박스)
런타임 : 컴퓨터 프로그램이 실행되고 있는 동안의 동작
물류에서 사용되는 컨테이너가 규격화를 거쳐 장거리 화물을 대량으로 실어 나를 수 있게 된 것과 마찬가지로 컨테이너는 소프트웨어 배포 큰 힘이 되었다!
개발자는 하나의 컨테이너를 생성하여 소프트웨어가 물리환경과 가상환경에서 모두 호환이 가능하게 할 수 있다.
컨테이너는 완전히 격리된 구조로 제작되어서 독립적 실행이 가능하다.
따라서 버전 충돌이 발생하지 않는다.
별도의 운영체제 설치 하지 않아 모니터링이 수월하다.
호스트 운영체제의 모든 리소스를 사용하도록 설정도 가능하다.
호스트 운영체제가 하나의 컨테이너 파일을 관리하는 것이다.
- 따라서 컨테이너가 전체 운영체제를 포함하고 있는 것이 아니기 때문에 최소한의 컴퓨팅 리소스만 필요로 하며 빠르고 쉽게 설치가 가능하다.
- 이런 효율성 덕분에 클러스터에 구축이 가능하며 개별 컨테이너들이 복잡한 애플리케이션의 단일 구성 요소를 캡슐화 한다.
컨테이너 자체를 컨테이너 내에서 이미지화하여 배포하거나 생성하는 것도 가능하다.
클라우드 연계 시 무한으로 확장 가능한 플랫폼 아키텍쳐를 구성할 수 있다.
기존 VM의 경우 컴퓨팅 인프라의 가상화를 지원하는 반면 컨테이너는 소프트웨어 애플리케이션의 가상화를 지원한다.
- 애플리케이션의 구동 환경을 가상화하는 논리 패키징 방식을 제공하는 것이다.
- 즉, 각각의 앱이 별도의 운영체제에서 구동되는 것이 아니라 컨테이너 런타임 위에서 가동되기 때문에 환경의 영향을 덜 받게 된다는 것이다.
개발자들은 각기 다른 컨테이너에 애플리케이션 구성요소를 분리함으로써 전체 애플리케이션에 대한 재작업 없이 개별 구성 요소들을 업데이트 할 수 있다.
- 예를 들어보자
A라는 개발자가 모바일 어플을 만드는데 개발에 최적화된 개발 서버를 따로 두고 개발을 진행했다.
완성을 한 뒤에 테스트 서버에서 따로 어플을 구동시켜서 테스트해보려는데 에러 천지이다.
테스트 서버에서 나는 에러를 수정하여서 다시 개발 서버에서 추가적으로 기능을 더 개발하려고 구동시키니 원래는 잘 됐던게 이번에 또 에러 천지이다.
이런 현상은 대부분 OS의 종류와 버전을 비롯하여 서버 환경의 차이가 존재하기 때문이다.
VM을 사용하는 경우 이러한 현상이 비일비재 하다.
개발에 사용한 어플 관련 라이브러리나 종속 항목 등이 하이퍼바이저+게스트 OS
에 하나하나 설치되어 있을 것이다.
- 하이퍼바이저 사용에 비해 컨테이너는 훨씬 가벼운 환경을 제공한다.
- 예를 들어보자
위의 예에서 같은 상황인 개발자의 경우 자신이 개발한 어플 관련 라이브러리, 종속 항목 등을 패키지로 묶어서 소프트웨어 구동 환경을 위한 격리된 환경에 별도로 배당을 한다.
즉, 하이퍼바이저+게스트 OS
설치없이 유사한 역할을 해주는 것이 컨테이너이다.
패키지로 묶은 것이 컨테이너 위에서 구동되는 형태인 것이다.
- 이런 형태를 사용하면 개발자와 운영자 입장에서 훨씬 작은 단위로 업무를 수행하게 된다.
이전에는 각각의 어플마다 게스트 OS가 필요하고 그 가상머신 위에서 올린 환경에서의 구동이 필요했지만 이제는 그냥 호스트OS의 커널에서 직접 구동하는 것이 가능하다는 것이다.
게스트OS를 또 부팅하지 않기 때문에 속도 측면에서 이점이 크고 해당 어플 시스템에 필요한만큼만 사용하기 때문에 메모리를 적게 사용한다.
'Docker' 카테고리의 다른 글
[Docker] Volume Mount(볼륨 사용하기) (1) | 2020.03.26 |
---|---|
[Docker] 이미지 빌드와 컨테이너 실행 (0) | 2020.03.24 |
[Docker] About Dockerfile (0) | 2020.03.23 |
[Docker] 도커란? (What is Docker) (0) | 2020.03.23 |
[Docker] 하이퍼바이저란? (What is Hypervisor) (0) | 2020.03.20 |