Docker란?

Jiwan Ahn·2023년 2월 8일
0

항상 어떤 것의 존재 이유를 설명하려면, 있으면 좋은 것 보다는 없으면 벌어지는 일들을 위주로 서술하는 것이 좋다.


컨테이너 단위의 가상 환경

Docker가 없으면 새로운 환경의 서버를 구축해야할 때마다 서버 PC를 새롭게 사야하는 매우 번거로운 일이 발생한다. Docker는 컨테이너 단위의 가상 공간을 만들어, 이곳에서 독립적으로 애플리케이션을 구축할 수 있도록 한다.

가령 A컨테이너에는 AWS를, B 컨테이너에는 Azure를 사용하게 하는 등, 두 컨테이너가 서로 영향을 끼치지 않고 완전히 다른 서버 환경을 구축할 수 있도록 해주는 것이 바로 Docker이다.

음, 2학년 학부생 시점으로는 마치 Class를 통해 메소드들을 객체화 시키는 그런 느낌인 것으로 이해했다. 동일한 인터페이스를 제공하는 동시에, 매우 편하게 인스턴스들을 생성할 수 있는 것처럼, 도커 역시 이미지를 통해 서버의 모든 정보를 받고, 편하게 가상 환경들을 구축할 수 있는 것처럼 말이다.

조금 다른 느낌인 것 같다. 보통 우리가 윈도우에서 리눅스를 가동하려 할 땐, Virtual Machine을 통해 가상환경을 제공해야 하는데, 이 과정에서 추가적인 운영체제를 가동시켜야 할 작업이 요구되고, 이 작업은 상당한 Overhead를 야기한다. 한번쯤 Virtual Machine을 사용해본 사람이 있으면, 엄청나게 버벅대는 경험이 있지 않은가?


OS 추가 설치 No!

Docker은 OS를 가상화 시키는 것이 아닌, 프로세스를 격리시키는 방법을 사용한다. 이로 인해 Overhead가 상당히 감소되고, 딱 필요한 정도의 프로세스만 사용하기 때문에 훨씬 효율적이다. 운영체제를 따로 설치할 필요없이, Docker를 통해 가상환경을 구축하고, 거기서 원하는 모든 개발을 다 할 수 있는 것이다. 거기에 속도 저하도 거의 없으면서, 원하는 만큼 컨테이너를 구축하고, 서로 완전히 다른 환경을 구축해도 문제를 일으키지 않으니, 이 얼마나 혁신적인 시스템인가? 한 컨테이너에는 Mysql 서버를, 한 쪽에는 Ubuntu를, 또 다른 컨테이너에는 Redis를...


Docker 요약

오늘의 글을 요약하자면 다음과 같다.

  • Docker은 혁신적인 가상환경 구축 플랫폼이다.
  • 기존의 OS 별도 설치로 인한 overhead 발생을 방지하고, 프로세스를 격리시키는 방법을 채택한다.
  • 컨테이너 단위로 가상환경을 구축하며, 각 컨테이너는 독립적으로 작동한다.
  • 컨테이너를 이용하여, 전혀 다른 환경의 서버들을 독립적이고 효율적으로 구축할 수 있다.
profile
Develop, not Code.

0개의 댓글