도커 기본 개념 정리

김동현·2022년 11월 23일
0

도커컨테이너 기반의 오픈소스 가상화 플랫폼이다.

서버를 관리한다는 것

위 그림에서 영사기를 키기 위해서는 단지 전원을 키는 것이 아니라 여러가지 기구들의 도움이 필요하다는 알 수 있다. 만약 저 수많은 기구 중에 하나라도 이상이 있다면 영사기가 제대로 동작하지 않을 수 있다는 문제가 있다.

이와 같이 서버를 관리는 겉으로는 서버가 잘 도는 것 처럼 보이지만 그 내부는 복잡한 환경으로(이 중에 하나라도 제대로 동작하지 않으면 서버가 잘 작동하지 않을 수 있음) 이루어져 있다.

단순히 프로그램을 설치하는 것 뿐만 아니라 계속해서 바뀌는 서버 환경(인프라 변경, 다양한 프로그래밍 ...)때문에 서버를 관리하기 굉장히 힘들다.
-> 도커가 등장하고 서버관리, 개발 방식이 완전히 바뀌게 된다.

기존의 서버 관리 방식

위 과정을 일일히 작업을 해줘야지 프로그램이 뜰 수 있었다.
만약 파이썬 버전이 바뀌어 업데이트 해야된다면 현재 서버에 프로그램들이 많이 돌고있고 많은 프로그램들이 파이썬을 사용 중일 때 어떤 일이 일어날지 모름.(막상 실행했을 때 문제가 생길 수도)

도커를 활용한 서버 관리

모든 것이 컨테이너로 추상화를 할 수 있게됐다. 서로 다른 프로그램이지만 컨테이너라는 공통적인 형태로 만들 수 있게 되었다.

  • VM과 컨테이너(도커)의 차이

    컨테이너
    컨테이너는 코드 및 종속성을 함께 패키징하는 Application 계층의 추상화이다. 여러 종류의 컨테이너가 동일한 시스템에서 실행되고 OS커널을 다른 컨테이너와 공유할 수 있으며, 각 컨테이너는사용자 공간에서 분리된 프로세스로 실행한다는 의미를 가진다.(격리의 역할을 해주는 것이기 때문에 성능상 거의 하락이 없음)

도커의 구조를 보면 하나의 HostOS 위에 도커를 설치하여 그 위에 각각의 서비스(application) 환경들을 설치/운영하는 형태이다. 따라서 서비스들은 각각 OS를 설치하는 것이 아니라 하나의 HostOS 위에서 자원만 공유하기 때문에 상대적으로 매우 가벼우며 도커가 설치된 환경이라면 이미지가 사용 가능하기 때문에 어디서든 사용 가능하다는 장점이 있다. 즉 컨테이너란 프로세스 단위의 분리 독립된 환경(공간)안의 가상공간이라고 할 수 있다.(HostOS에서 커널 공유)

가상머신(VM, Virtual Machine)
가상 머신은 하나의 서버를 여러 서버로 전환하는 물리적인 하드웨어의 추상화이다. 하이퍼바이저 기법을 통해 딴일 시스템에서는 여러 VM을 실행할 수 있지만, 각 VM에는 운영체제, 애플리케이션, 필요한 Binary 및 Library의 전체 복사본이 포함되어 있다.(각각의 커널)

가상머신은 하이퍼바이저를 이용해 하나의 호스트OS에서 여러 개의 OS를 사용하는 방법이며, 위 사진에서의 VM 구조와 같이 기반인 HostOS 위에 각각의 VM, 즉 GuestOS를 하나씩 설치하는 형태이다. 이처럼 각각의 가상머신은 하나의 독립된 커널 공간을 가진 완전한 컴퓨터를 생산하는 식의 환경을 구성한다(무겁지만 보안성 측면 좋다).

profile
오늘은 오늘

0개의 댓글