Docker?
도커의 주 목적은 서버환경을 격리하기 위해 사용한다.
이를 독립된 환경에서 격리하는 기능을 통해 프로그램 간 의존성 이슈 또는 버전 이슈가 생기지 않도록 도와준다.
- 의존성 이슈 : 서로 다른 시스템이지만 같은 디렉토리를 공유할 수 있다.
- 버전 이슈 : 프로그램은 한 서버에 한 버전만 설치할 수 없기 때문에, 때에 따라서 호환이 되지 않는 경우가 발생할 수 있다.
또한, 뒤에서 설명할 것이지만 도커는 컨테이너로 격리시키기에 여러 가지 서버 기능을 비교적 가볍고 안전하게 운용할 수 있다.
Container
도커는 사실 얼굴마담이고, 핵심은 컨테이너에 있다고 봐도 무방하다.
컨테이너는 개발에 상당히 용이한 특징을 가지고 있다. 몇가지 특성을 이야기 하자면...
- 컨테이너로 완전히 격리되어 발생하는 여러 프로그램이 한 서버에서 생기는 문제를 대부분 해결 할 수 있다.
- 컨테이너를 이용해 여러 서버 기능을 함께 실행할 수 있다.
: 가령, 한 대의 물리적인 서버에서 컨테이너 기술을 활용하여 여러 개의 웹서버를 올릴 수 있다. - 컨테이너는 자유롭게 옮길 수 있다.
: 실제로 컨테이너 자체를 옮긴다기 보다는, 정보를 내보내고 다른 도커 엔진에서 복원하는 형태이지만 어려운 일이 아니다.
이러한 특성을 통해 같은 상태로 튜닝한 컨테이너를 팀원들에게 배포해서 동일한 개발환경을 구축할 수 있다.
Docker vs. VM
이쯤, 도커를 알고나게 된다면 VM과 비교를 할 수 밖에 없을 것이다.
공통점으로는 둘다 격리된 환경에서 실행하는 가상화 기술이다.
(엄밀히 말하면 과거에는 도커가 LXC 기술을 사용해서 같은 가상화 기술을 사용했다고 하지만 현재는 아니라고 한다.)
다른점으로는...
- 도커 컨테이너는 하나의 Host OS 위에서 공유하며 독립된 환경을 제공한다.
반면, VM에서는 하이퍼바이저 위의 Guest OS 위에서 돌아가는 환경이라 컨테이너보다 비교적 더 무겁다. - 도커는 OS커널을 다른 컨테이너와 공유하며 VM보다 공간을 적게 차지해서 더 많은 애플리케이션을 처리할 수 있다.
도커는 데이터 또는 프로그램 격리시키는 기능을 용이하게 제공하는 소프트웨어다.
https://www.docker.com/resources/what-container/
https://docs.docker.com/get-started/overview/
'Docker' 카테고리의 다른 글
[Docker] 도커의 동작원리 (2) | 2023.08.31 |
---|---|
왜 도커이미지를 Linux Alpine으로 쓸까? (0) | 2023.08.30 |