[Docker]Docker란?

Hoplin·2022년 8월 7일
0

Immutable Infrastructure

  • Immutable Infrastructure : 호스트 OS와 서비스 운영환경을 분리하고, 한번 설정한 운영환경은 변경하지 않는다(Immutable)라는 개념이다.

    • 서비스 운영환경을 이미지로 생성한 뒤 서버에 배포하여 실행한다.

    • 서비스가 업데이트 되면, 환경 변경이 아닌 이미지를 새로 생성하여 배포 하는 것이다.

  • Immutable Infrastructure 장점

    • 편리한 관리 : 서비스 운영 환경을 이미지로 생성, 이미지 자체만 관리하면 된다. 이미지를 중앙관리하여 체계적인 배포, 관리가 가능하다. 이미지 생성 설정도 파일로 되어있다. 버전관리 시스템을 사용하기 용이하다

    • 확장 : 이미지 하나로 서버를 계속 찍어낼 수 있다. 이로인해, 클라우드 플랫폼의 자동 확장(Auto Scaling) 기능과 연동하며, 손쉽게 서비스를 활장할 수 있다.

    • 테스트 : 개발자의 PC, 테스트 서버에서 이미지를 실행하기만 하면, 서비스 운영 환경과 동일한 환경이 구성된다. 테스트하기 매우 편해짐

    • 가벼움 : 운영체제와 서비스 운영환경을 분리하여, 가볍고 어디서든 실행 가능한 환경 제공(Portable)

  • Docker은 이 Immutable Infrastructure를 구현한 프로젝트이다. 서비스에 필요한 모든 요소를 모아 Docker컨테이너를 넣는다. 오픈소스, 개발자가 작성한 소스코드 모두 가능하다

    	![](https://velog.velcdn.com/images/hoplin/post/a595149c-c03d-4a9c-ae30-5e49bb664392/image.png)

가상머신 vs Docker

  • 가상머신

    편하지만 성능이 좋지 못하다. CPU에 가상화를 위한 기능들이 많이 추가되었지만, 아직 가상 머신은 Real머신에 비해 속도가 느리다.

    현재는 Full Virtualization(전가상화)의 속도 개선을 위해 Paravirtualization(반가상화)방식이 개발되어 널리 쓰이고 있다.

    • 전가상화
    • 반가상화
위 그림처럼 가상 머신 자체는 완전한 OS형태를 띄고 있다. 즉 항상 Guest OS(OS iso파일) 을 설치해야한다. 그렇기 때문에 용량이 크며 이는 배포 관리 기능에 있어 치명적이다.(무거워짐)

- Hypervisor : 가상 머신 위에 올라가는 Guest OS이미지들은 모두 Kernel이 존재한다.이 커널은 리소스를 관리하고, 명령어 해석하는 방식이 모두 다르다. 하이퍼바이저는 호스트 OS에서 여러 Guest OS를 실행하기 위한 플랫폼이라고 생각하면 된다.
  • Docker

    Docker은 Paravirtualization보다 더 경량화된 방식이다. Guest OS를 설치하지 않으며, 운영을 위한 프로그램, 라이브러리만 격리해 설치할 수 있고, OS Resource(System Call)은 호스트 OS와 공유한다. 그렇기 때문에 이미지 용량이 크게 줄어들었다.

    Docker는 하드웨어를 가상화 하는 계층이 없다. 그렇기 때문에 메모리 접근, 파일시스템, 네트워크 모두 가상 머신에 비해 빠르다. Docker는 이미지 생성/배포에 특화되어있다. 버전관리도 가능하며, Docker이미지를 공유할 수 있는 Docker Hub도 제공한다.

profile
더 나은 내일을 위해 오늘의 중괄호를 엽니다

0개의 댓글