ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [모각코] 1회차 - Docker
    학교생활/22-2 '모여서 각자 코딩' 2022. 9. 28. 02:09
    728x90

    To. 팀장님

    블로그 늦게 써서 죄송합니다.

    킹치만.. 블로그 쓰기 vs 컴구 강의 듣기
    닥후

    정말 죄송합니다.
    -서영올림-

    그래서 오늘은 컴퓨터구조...

     

    가 아니라 도커에 대해서 알아보...

     

    기전에..

     

    먼저 추상화에 대해서 알아봅시다.

     

    추상화란,
    복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 기능을 간추려 내는 것이다.


    그게 뭔데 씹덕아~스럽죠?

     

    뭔지 안다고요?
    축하합니다. 당신은 씹덕입니다.

     

    진부한 예시를 하나 들어볼게요

     

    자동차를 운전할 때 액셀을 밟아 속도를 내고, 브레이크를 밟아 정지를 한다.
    핸들을 오른쪽으로 돌리면 바퀴가 오른쪽으로 향하고 왼쪽으로 돌리면 왼쪽으로 향한다.


    여기까지만 알아도(면 좀 위험하지만..) 운전은 할 수 있죠

    저희가 운전을 하기 위해서 자동차의 엔진과 구조, 작동원리를 알아야 하나요?

    그랬으면 전 필기 n수 했을 겁니다



    자동차를 운전할 때,운전대와 브레이크, 액셀 페달만 사용하는 것은 추상화의 일종입니다.



    그렇다면 컴퓨터 시스템 리소스를 추상화하면 뭐라고 말할까요?

     

    이를 가상화 라고 합니다.

     

    가상화란,
    물리적인 컴퓨터 리소스의 특징을 다른 시스템, 응용 프로그램, 최종 사용자들이 리소스와 상호 작용하는 방식으로부터 감추는 기술이다.


    또 그게 뭔데 씹덕아~ 스럽죠?

    쉽게 말하면 컴퓨터 안에 또 다른 가상 컴퓨터가 존재하도록 하는 기술입니다.

     

    단일 물리 하드웨어 시스템에서 여러 시뮬레이션 환경이나 전용 리소스를 생성할 수 있죠.



    가상화 컴퓨팅을 사용하면,

     

     

     

    ....

     

    ....시스템 설정 구성과 복원이 용이하구요,

     

    하나의 컴퓨터에서 한 개 이상의 운영체제를 가동할 수 있으니

    평소 10%만 사용하던 서버를 40-50% 혹은 그 이상으로 사용률을 높여 시스템 이용률이 향상됩니다.




    비즈니스 측면에서 보자면
    서버, 스토리지, 네트워크 등 IT 리소스에 투자를 줄일 수 있고

     

    게임 점검시간💢💢 과 같이 서비스가 제공되지 못하는 시간을 최소화하여

    비즈니스 연속성과 재해복구가 향상되며

    이로 인해 데이터 센터 관리가 간소화될 수 있답니다.



    와~~ 너무 좋당~



    서버 가상화 기술은 어떤 게 있을까요?



    ○ Virtual Machine 기반 - Hypervisor 이용
        ○ Type 1: native / bare-metal 형
            ○ 전가상화 full virtualization
            ○ 반가상화 para virtualization
        ○ Type 2 : hosted 형

    ○ Container 기반 - 호스트 OS의 컨테이너 기술을 이용

     

    오늘은 VM 이 아닌 Container 기반의 Docker를 소개하려고 하니

     

    VM에 관해서는 간단히 여러분들의 경험을 상기시켜볼게요

     

    C++ 프로그래밍에서 Virtual Box 같은 하이퍼바이저를 이용하여 (주인장 기준) mac OS 위에 guest OS로 리눅스 서버를 다들 올렸을 거예요.
    => Type 2

     

    이렇게 하이퍼바이저 위에는 OS를 여러 개 생성할 수 있고, 각 OS 마다 메모리나 하드디스크를 맘대로 설정할 수 있어요.

     

    설치방법 ppt를 무지성으로 따라 하느라 기억이 안 날 수도 있는데요, 여러분들은 설정을 하셨답니다
    아무튼 진짜임

     

    그리고 생성된 게스트 OS 들은 다른 OS에 영향을 미치지 않아요.

     

    즉, 하이퍼바이저는 하드웨어 자원을 각각의 게스트 OS 에 파티션을 분할하여 서버 가상화를 구현합니다.





     

    그런데 말입니다...


    소프트웨어를 개발하면 이를 배포하기 위해

     

    설정, 바이너리 파일, 라이브러리 등과 이들 사이의 의존성 관계를, 각 OS 마다 그에 맞는 종속성 문제를 해결해야 합니다.

     

    방금의 그 묶음들을 컨테이너라고 부르고,

     

    컨테이너 엔진의 도움을 받으면 시스템 의존성이 최소화되어 소프트웨어 시스템의 이식이 용이해집니다.

     

    컨테이너 엔진이 가상의 런타임 환경을 제공해주고 각각의 응용 소프트웨어는 격리된 환경에서 실행되거든요.






    컨테이너가 에뮬레이트 하는 대상은 하드웨어가 아니라 운영체제! 라는 겁니다.

    simulation : 시스템 동작의 몇 가지 특성을 이용하여 그 결과를 산출
    emulation : 대상 시스템의 동작을 그대로 모사하여 흉내

    하이퍼바이저를 이용한 가상화에 비하여 가볍고 빠르다는 장점을 가집니다.


    현기증 난단 말이에요

    빨리 도커 알려주세요

     

    여기까지 읽느라(0명) 수고하셨습니다

     

    Docker는 널리 이용되고 있는 컨테이너 기반의 가상화 플랫폼입니다.

     

    MacOS, Windows, Linux 상에서 실행되는 컨테이너 엔진을 제공하고,

    Azure, AWS 등의 클라우드 컴퓨팅 환경에서의 실행도 지원해줍니다.

     

    도커는 Immutable Infrastructure Paradigm 이라는 "서버가 배포된 이후 절대 변경되지 않는 형태의 불변 인프라" 에 바탕을 두어

     

    sw 나 서비스의 빠르고 효율적인 shipping 에 집중하고 있습니다.

     

    때문에 근본적인 격리 기술을 넘어 다양한 주변 기능에 초점이 맞추어졌습니다.

     

     

    자~이제 여러분 이거 다~ 이해되시죠?

    겠냐고 레이어는 뭐고 이미지는 뭔데

     

    Docker Image


    제가 위에서

    """
    소프트웨어를 개발하면 이를 배포하기 위해

    설정, 바이너리 파일, 라이브러리 등과 이들 사이의 의존성 관계를, 각 OS 마다 그에 맞는 종속성 문제를 해결해야 합니다.
    방금의 그 묶음들을 컨테이너라고 부르고, ...어쩌구저쩌구
    """

    라고 했잖아요

     

    도커에서 서비스 운영에 필요한 서버 프로그램, 설정 파일, 소스코드, 라이브러리, 실행파일을 묶.기.만 하는 것을 Docker Image 라고 합니다.


    뭐야? 컨테이너라면서요
    ㄴ 일단 기다려보세요

    즉, 특정 프로세스를 실행하기 위한 모든 파일과 설정값을 지닌 것으로 더 이상의 의존성을 건드릴 필요 없는 상태를 말합니다.

     

    우분투를 실행하기 위한 모든 파일들(예 : A+B+C)의 묶음
    nginx를 실행하기 위한 모든 파일들의 묶음
    우분투 이미지를 베이스로 만든 nginx 이미지는 A+B+C(우분투 이미지)+ngnix
    webapp 을 실행하기 위한 모든 파일들의 묶음
    webapp 이미지를 nginx 기반으로 만들었다면 A+B+C+nginx(nginx 이미지)+webapp source 레이어로 구성
    if webapp 소스 수정:
    A B C ngnix 를 제외한 새로운 webapp source(v2) 레이어만 다운

    Layer

    기존 Docker Image 에 추가적인 파일이 필요할 때 다시 다운받는 게 아닌 해당 파일을 추가하기 위한 방법

    티끌 레이어 모아 이미지,

    레이어를 추가추가하여 하나의 파일 시스템으로 사용할 수 있습니다..


    Docker Container


    잠깐 기다리게 해서 죄송합니다 오죠-사마들,


    컨테이너는

    Docker Image 를

    1. 격리된 환경에서 다른 환경의 간섭을 막고
    2. SW의 프로세스의 독립적 실행을
    3. 운영체제 수준에서 확보해주는 기술

    을 말합니다.


    컨테이너의 생성 및 실행은 이미지 레이어에 read/write 레이어를 추가하는 방식이라,

    여러 컨테이너를 생성해도 최소한의 용량만을 사용하고 바뀐 부분을 RW 레이어에 적습니다.

    컨테이너가 종료되어도 메모리에는 남아있기 때문에 다시 시작할 수 있습니다.

    Q. 그럼 컨테이너를 삭제하면 어케되나요
    A. 컨테이너에서 생성한 파일이 사라지는 거라 DB 삭제 하는거랑 같다고 보면 됩니다.
    ㄴ 미친..







    끝!!

     



    ps. 1주차라 열심히 쓴게 아니라 랩미팅때 이거 발표해야해서그럼
    저 일부러 의식해서 열심히 쓴거아닙니다?


    분명 말했다..기대같은거 하지말라고


    이거 나




    근데 모바일로 보니까 열심히 엔터친거 다 깨지는데 이거 어케함?💢

    728x90
Designed by Tistory.