티스토리 뷰

docker

docker란?

DEV_GOLF 2022. 6. 17. 22:27
반응형

가상 머신과 도커 컨테이너

기존의 가상 머신은 여러 개의 운영체제를 하나의 호스트에서 생성해 사용하는 방식이었다. 이러한 방식은 커널 라이브러리 운영체제를 운영하기 위한 여러가지 리소스가 필요했고 그로인해 이미지의 크기가 매우 커진다. 그리고 하이퍼바이저를 반드시 반드시 거쳐야 하기에 일반 호스트에 비해 성능이 떨어진다. 즉 이렇게 무겁고 비효율적인 성능에 가상 머신을 이용할 이유가 없었다.

그래서 나온 것이 바로 docker다. 도커 컨테이너는 리눅스의 자체 기능인 chroot, 네임스페이스, cgroup을 사용함으로써 프로세스 단위의 격리 환경을 만들기 때문에 성능 손실이 거의 없다. 또한 컨테이너에 필요한 커널은 호스트의 커널을 공유해 사용하여 OS가 빠지기 때문에 훨씬 적은 용량의 이미지 파일 구축이 가능하다.

보다 싶이 아키텍처만 보더라도 OS라는 거대한 리소스가 docker에는 없다는 것을 알 수 있다.

자 그러면 이제 왜 가상머신이 아닌 docker를 써야하는 가는 잘 알았다. 그럼 docker를 정확히 왜 써야 할까?

애플리케이션의 개발과 배포의 편의성

서버를 부팅할 대 실행되는 운영체제를 일반적으로 '호스트 OS'라 부르며, 컨테이너는 호스트 OS 위에서 실행되는 격리된 공간이다. 컨테이너 자체에 특별한 권한을 주지 않는 한 컨테이너 내부에서 무슨 작업을 하든 호스트 OS에는 영향을 끼치지 않는다. 즉, 우리만의 독립된 개발 환경을 보장 받을 수 있는 것이다.

우리들이 컨테이너 내부에서 작업을 마치면 이를 운영 환경에 배포해야 한다. 하지마 docker를 사용하면 이미지라는 일종의 패키지를 만들어 운영 서버에 전달하면 컨테이너에서 사용되던 운영 서버에서 새롭게 패키지를 설치할 필요 없이 그리고 OS 의존성과 관계 없이 다른 서버에서 똑같이 복제하여 운영할 수 있다. 개발과 운영 환경의 통합이 가능해진 것이다.

여러 애플리케이션의 독립성과 확장성이 높아진다.

요즘 모놀리스에서 마이크로 서비스구조로 변화하고 있는데 여러 모듈을 독립된 형태로 구성하기 때문에 각 모듈이 독립적으로 언어에 종속되지 않고 변화에 빠르게 대응이 가능하다. 컨테이너는 수 초 내로 생성, 시작이 가능할 뿐 아니라 여러 모듈의 독립된 환경을 동시에 제공할 수 있어 마이크로서비스 구조에서 많이 사용되고 있다.

 

Refer.

[도서] 시작하세요! 도커/쿠버네티스 - 용찬호 지음 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
글 보관함