Post

도커란





도커의 생성 배경

  • 서버 관리는 매우 복잡하다.
    • 하나의 개발 환경 관리도 복잡한데, 여러 대의 서버의 환경을 관리해야 한다.
    • 자꾸 바뀌는 개발 환경은 복잡도를 n배 더한다.

서버 관리의 발전 과정

  1. 문서 작성
    • 버전 관리나 서버 관리에 대한 문서를 작성해두는 것이다.
    • 단점
    • 수작업이기 때문에 퀄리티에 대한 문제
    • 환경 변화에 따른 예외적인 결과
    • 업데이트가 안되는 등의 버전 관리 문제
  2. 상태 관리 도구
    • 설정 파일을 작성하면, 프로그램이 스크립트를 짜주는 편리한 도구
    • 장점
    • 코드로 다룰 수 있다는 이점
    • 코드이기 때문에 버전 관리가 용이하다는 점 - 단점
    • 러닝 커브
  3. 가상 머신
    • 호스트 os에 1개 이상의 게스트 os를 설치하는 방식
    • 장점
      • 한 서버에 여러 개를 설치 가능
      • 상대적으로 익숙하고 쉽다.
    • 단점
      • 너무 무겁다.
      • 서버 이미지에 대한 공유가 어렵다.
    • 단점
  4. 자원 격리
    • 각각의 프로세스를 가상으로 분리하고
      • 프로세스들이 각자 사용하는 파일, 디렉토리도 가상으로 분리
      • 프로세스들이 각자 사용하는 리소스도 가상으로 분리
      • 리눅스의 컨테이너 기술이다.
    • 장점
      • 가볍고 빠르다.
    • 단점
      • 기술이 너무 어렵다.
    • 이것을 쉽게 사용할 수 있게 만든 것이 도커이다.





도커란


img-description 가상머신 vs 도커


  • 가상 머신은
    • 하이퍼바이저를 이용해 리소스를 나누고
    • 그 위에 게스트 os들을 설치하여 사용한다.
    • 실제 리소스를 나눠 받고 실제 컴퓨터처럼 동작하기 때문에 큰 오버헤드가 발생한다.
  • 도커는
    • 도커 엔진 위에서 컨테이너들을 격리만 시켜준다.
    • 컨테이너들은 그저 하나의 프로세스이지만
    • 디렉토리나 파일들이 서로 격리되어 보이지 않기 때문에 각자 하나의 컴퓨터를 사용하는 것 같이 보인다.

도커의 특징

  • 확장성과 이식성
    • 도커 엔진이 설치된 곳이라면 어느 환경이든 컨테이너를 띄울 수 있다.
    • 오픈 소스이기 때문에 특정 회사나 서비스에 종속적이지 않다.
  • 표준성
    • 개발 환경에 따라 배포하는 방식이 각각 다르다.
    • 그러나 도커를 사용하면 배포 과정이 동일해진다.
  • 이미지
    • 이미지를 통해 컨테이너를 생성할 수 있다.
    • 빌드 서버에서 이미지를 만들어 이미지 리포지토리에 올리고,
      • 운영 서버에서 이미지를 당겨와 띄울 수 있다.
      • 훨씬 간단하고 가볍게 공유가 가능하다.
  • 설정 관리
    • 보통 환경변수를 통해 설정을 제어할 수 있다.
    • 이미지를 만들 때 환경변수에 의해 동적으로 설정 파일을 만들 수 있도록 해야한다.
  • 자원 관리
    • 컨테이너는 삭제 후 다시 만들면 모든 데이터가 초기화 된다.
    • 별도의 저장소에 관리가 필요하다.





This post is licensed under CC BY 4.0 by the author.