ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Dokcer의 등장 배경 및 정의
    Dokcer 2024. 9. 19. 11:28
    반응형

     

     

     

    전통적인 서버 관리

    서버를 최초에 추가하게 된다면 위와같은 복잡한 프로그램 설치 과정을 수행해야 한다. 

     

    하지만 수많은 프로그램들 중에 하나의 변경점이 생긴다면 앞뒤로 영향을 많이 주게 된다. 하나의 프로그램을 수정해야 하는 경우 각 단계마다 호환성 등의 어떠한 문제가 생길지 예상을 했어야 했다.

     

     

     

    Dokcer가 등장한 뒤에는 해당 프로그램들이 Container로 존재하고 있다. 

    보기에는 가상머신과 비슷한 느낌이지만, 조금 차이가 있다.

    독립적으로 실행되지만 가상머신 보다 빠르다.
    가상머신보다 쉽다.
    가상머신보다 효율적이다.

     

     

    도커의 등장 배경

    인프라 엔지니어들의 서버 관리를 위한 노력으로 예상되는 과정들을 우선 알아보자.

     

    1. 문서화

    파워포인트 문서로 스크린샷 등을 위하여 과정을 정리해두는 형식.

    하지만 문서로 정리하는 경우 OS가 달라진다면 해당 문서는 사용되지 못한다. 

     

    2. 상태관리 도구

    이러한 문서의 한계를 보안하기위하여 상태관리 도구를 사용하였을 것 이다. 

    상태관리 도구를 사용하여 문서가 아닌 코드로 관리를 하였을 것 이다. 

     

     

     

    3. 가상머신

    가상머신을 실행한다면 서로 영향을 주지 않고 실행이 된다.
    한 서버에 N개 설치도 가능하며, 현재 상태를 저장할 수 있다.

     

    하지만 처음부터 다시 설치해야한다면..?

    속도가 느리며 여러가지 문제가 다시 발생하였을 것이다.

     

    4. 자원격리

    프로세스 -> 가상으로 분리(서로 겹치지 않도록)
    파일, 디렉토리 -> 가상으로 분리 
    CPU, MEMORY,I/O -> 그룹별로 자세히 분리

     

     

    해당 기술이 있지만 일반적으로 사용하여 적용하는것이 너무 어려웠다. 

    이러한 여러가지 복잡한 문제를 해결하기 위하여 Dokcer가 등장하게 되었다. 

     

     

     

    가상머신과 Doker의 차이를 본다면, 빨간색으로 표시된 GuestOS와 Hypervisor 부분이 속도를 굉장히 더 느리게 만드는 역할을 한다. 하지만 Docker는 격리만 시키는 케이스이기때문에 성능 하락에 영향을 주는것이 없다. 

     

    도커의 특징 - 확장성/이식성

    • 도커가 설치되어 있다면 어디서든 컨테이너를 실행 할 수 있다. 
    • 특정 회사나 서비스에 종속적이지 않음
    • 쉽게 개발서버를 만들 수 있고 테스트서버 생성도 간편한다. 

     

    표준성

    • 도커를 사용하지 않는 경우 ruby, nodejs, go, php로 만든 서비스들의 배포 방식은 제각각 다름
    • 컨테이너라는 표준으로 서버를 배포하므로 모든 서비스들의 배포과정이 동일해진다.

     

    이미지 

    • 이미지에 컨테이너를 생성하기 때문에 반드시 이미지를 만드는 과정이 필요
    • 빌드 서버에서 이미지를 만들면 해당 이미지를 이미지 저장소에 저장하고 운영서버에서 이미지를 불러온다. 
    • Dockerfile을 이용하여 이미지를 만들고 처음부터 재현 가능

     

    설정관리

    • 설정은 보통 환경변수로 제어한다.
    • 하나의 이미지가 환경변수에 따라 동적으로 설정파일을 생성하도록 만들어져야한다. 
    • MYSQL_PASS=password와 같이 컨테이너를 실행할때 환경변수를 같이 지정한다.

     

    자원관리

    • 컨테이너는 삭제 후 다시 생성한다면 모든 데이터가 초기화된다.
    • 세션이나 캐시를 memcached나 redis와 같은 외부로 분리해야한다. 
    • 업로드 파일을 외부 스토리지와 링크하여 사용하거나 S3같은 별도의 저장소가 필요하다.

     

    도커가 가져온 변화

    • 클라우드 이미지보다 관리하기가 쉽다.
    • 복잡한 기술을 알지 못하여도 사용이 가능하다.
    • 코드와 설정으로 관리 -> 재현 및 수정이 가능하다.
    • 오픈소스 -> 특정 회사 기술에 종속되지 않는다.  
    • 이미지 빌드 기록이 남는다.
    • 다른 프로세스와 격리되어 가상머신처럼 사용하지만 성능저하는 거의 없다.

     

     

    이와같이 모든것들을 컨테이너화 할 수 있다. 

    반응형

    'Dokcer' 카테고리의 다른 글

    Docker 저장소 옮기기  (0) 2024.09.19

    댓글

Designed by Tistory.