ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Docker의 개념
    Docker 2020. 1. 9. 03:53

    Background

     

    •  소프트 엔지니어 ( 응용프로그램 개발자 )
    •  시스템 엔지니어 ( 인프라 구축 하드웨어, os, Network 등 물리적으로 선을 깔거나 하는 작업도 함 )
    •  On-premises ( 보안과 같은 문제로 내부에서 직접 네트워크 망을 구축해서 내부적으로 서버를 관리,  외부와는 단절 )    ( 인트라넷 )

           이때 내부망말고 외부에서 접속을 해야할 경우에 firewall ( 방화벽 )이라는 것을 설치한 뒤 특정 포트만 open               보통 80 port ( http )만 열어 둠

         

    • 클라우드 플랫폼 ( 내부적으로 서버를 관리하는 것이 아닌 클라우드 서비스로 서버를 운영 AWS )
    • Orchestration

          예를 들어 한대의 PC에 DB 서버, WAS 서버 를 같은 영역에서 사용한다면 하나의 자원으로만 해당 서버를 동작            시켜야 한다. 이때 각 서버를 독립적으로 나누어서 사용한다면 어떻게 될까 ?                                                        각 서버는 독립 되어서 각자 할당된 모든 자원을 끌어다 사용할 수 있는 이점이 있다.

          그렇다면 나눈 서버가 많아면 어떻게 해야 할까 ? 이때 사용할 수 있는 것이 로드 벨런싱 이다.                                  로드 벨런싱은 WAS1, WAS2, WAS3 의 역할을 하는 서버를 3개로 나누어서 사용하고 싶을 때                                  로드 벨런싱을 도와주는 L4, L7같은 장비를 사용하여 WAS1이 바쁠 때는 WAS2로 보내주고 또는 DDOS 공격과 같        은 해커들이 침입해 왔을 때 특정 IP, 또는 요청이 1분 단위에 몇번 이상 온다면 해당 IP를 차단하는 기능도 설치할        수 있다

         위 와같이 사용자가 필요한 부분만 따로 독립적으로 나누고 로드벨런싱 과 같은 기능을 하용하여 상호작용 할 수 있       게 하는 것이 오케스트레이션 이다.

     

     

    Virtual Machine이란 ?

    물리적 하드웨어 시스템에 구축되어 자체 CPU, 메모리, 네트워크 인터페이스 및 스토리지를 갖추고

    가상 컴퓨터 시스템 기능을 하는 가상 환경이라 정의 된다.

    이말은 즉 

    내가 현재 게시판 서버를 운영하고 싶어서 PC를 한대 구매해서 서버를 운영한다고 가정했을 때 

    현재 운영하고 있는 서버는 현재 PC의 30%정도의 기능만을 필요로 할 때 사용자는 그렇다면 나머지 70%의 기능들을 사용하고 싶을 것이다.

    또는 

    현재 Windows os를 사용중이지만 Linux os 를 사용하여야 할때 

    이때 VM 이라는 것을 사용하여 1대의 물리적 PC를 가상으로 나누어서 사용할 수 있게 할 수 있다 

    즉 가상 머신을 이용해

    현재 PC를 한개는 LINUX,

    다른 한개는 WINDOWS 기반의 OS로 설정하여 사용하는 식으로 운영할 수 있게 해주는 것이 Virtual Machine 이다.

     

    위와 같이 

    Host PC위에 OS가 있고 해당 OS위에 다른 OS를 걸쳐서 올리는 형식 

    이런식으로 하나의 가상 PC에 OS를 두어서 사용하게 된다

    이때 Docker 라는 것을 알면 VM의 단점을 잡아주면서 매우 편리하게 사용할 수 있는 환경을 만들어 줄 수 있다.

     

    Docker란 ?

    • GO 언어로 만들어짐
    • Linux 베이스
    • 오직 64 bit OS 에서만 동작

    Docker는 Background에서 설명한 한개의 서버를 기능들을 나누어서 사용하고, 해당 기능들을 오케스트레이션 해야하는 그러한 단점을 보완하기 위해 탄생

    기존에 LXC ( 리눅스 컨테이너 ) 라는 기술이 있었지만 해당 기술을 더욱 발전 시키면서 탄생한 것이 도커이다. 

    LXC는 직접 CPU, 메모리 등과 같이 하드웨어를 다 나누어서 할당 해 주어야 하지만 

    도커는 프로세스 단위로 동작하기 때문에 매우 큰 변화 였음

     

    Docker는 위에서 말한 VM과 같이 한개의 PC를 가상으로 나누어서 사용할 수 있게 해준다.

    그렇다면 뭐가 다른 것일까?

    VM 은 CPU, 메모리 등을 할당해서 새로운 독립된 PC를 만든다는 개념

    즉 새로운 PC위에 새로운 OS를 설치해서 사용함

    BUT

    Docker는 기존의 리눅스 OS 위에 프로세스들만 격리시키는 기술을 사용해서 사용하기 때문에

    가상 머신처럼 OS를 새로 띄우는 것이 아닌 기존의 OS위에 프로세스만 띄워서 사용하며

    VM 보다 속도가 빠르며 OS를 설치하지 않아도 되기 때문에 용량도 많이 차지하지 않기 때문에 

    오늘 날 에는 도커를 대부분 사용한다 

     

    'Docker' 카테고리의 다른 글

    Docker 용어  (0) 2020.01.09

    댓글

Designed by Tistory.