
도커는 컨테이너를 관리하기 위해 만들어진 소프트웨어이다.
🤔 그러면 컨테이너 라는 것은 무엇일까 ?
컨테이너는 큰 서버를 효율적으로 나눠서 사용하기 위한 가상화라는 기술이다.
따라서 도커와 컨테이너를 이해하려면, 먼저 가상화 기술이 무엇인지, 그리고 왜 사용하는지에 대한 이해가 필요하다.
가상화 기술의 필요성에 대해서 이해하기 위해서, 먼저 한가지 상황을 예로 들어보자.
CPU 8코어 와 RAM 64GB 인 좋은 성능의 서버 한대를 가지고 있다고 가정해보자.CPU 1코어 와 8GB 메모리 를 소모하는 A프로그램을 4개 실행한다고 가정해보자.CPU 4코어 에 32GB 메모리 가 된다.
1코어 와 8GB 메모리를 소모한다고 가정해보자.CPU 5코어 에 40GB 메모리 를 사용할 것이다.
소프트웨어들을 하나의 OS에서 운영하는 것은 피하는 것이 좋다.
🤔 그러면 하드웨어를 여러 대 사용해서, 물리적으로 분리된 환경에서 관리하고 실행시키면 되지 않을까?
하드웨어의 성능은 빠르게 발전하고 있다. 그리고 그와 반대로 하드웨어를 사용하는 소프트웨어의 크기는 상대적으로 감소하는 추세이다.
기업 입장에서는 낮은 사양의 컴퓨터를 여러 대 사용하는 것 보다, 높은 사양의 컴퓨터를 한 대 사용하는 것이, 가격이나 설치 공간, 설치 인력, 서버 운영, 하드웨어 사이즈나 배선 같이 여러면에서 훨씬 경제적이다. ( 보통 성능에 차이가 난다고 해서 하드웨어의 크기가 크게 커지는 것은 아니다. 그리고 기기가 여러대면 전기 사용량도 더 들어간다. )
이런 이유들로 가상화라는 기술을 통해 하나의 하드웨어를 효율적으로 활용하는 것이 엔터프라이즈 환경에서는 필수적이다. 그래서 대부분의 IT 기업이, 운영 환경에서 이렇게 가상화 기술을 활용하고 있다.
하나의 큰 서버를 여러 개의 논리적인 작은 서버로 쪼개서 사용하는 가상화 기술에는 크게 하이퍼바이저 가상화와 컨테이너 가상화가 있다.
다음 내용에서는 하이퍼바이저 가상화에 대해서 알아보자.
✔️ 참고
물리적인 컴퓨팅 환경 내부에서 논리적인 컴퓨팅 환경을 만들 수 있는 기술강의를 듣고 정리한 글입니다. 코드와 그림 등의 출처는 데브위키 강사님께 있습니다.
( https://inf.run/Apgvc )