ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Docker - 가상화, 컨테이너, 이미지
    Developer/environment 2020. 3. 17. 22:53

    docker 는 컨테이너를 기반으로 만들어진 오픈소스 가상화 플랫폼이다.

     

    1) 가상화

     

    출처 : VMware 가상화소개 PPT

    - 가상화란,

    서버 한 대를 여러개의 작은 서버로 나누어 사용하는 기술을 일컷는다.

     

    - docker 역시 가상화 플랫폼으로 docker를 설치하면 간단한 명령어로 하나의 컴퓨터에서 다양한 환경을 만들 수 있다.

    ( python분석용, application개발용, cache저장용 )

     

    * 필자는 분석환경을 주로 conda(python용 가상환경)로 관리해왔었는데

    이번 deploy 환경 조성을 시작으로 docker로 변경하면서 더 넓은 범위에서 환경을 구분하는 것이 가능해졌다.

     

     

    2) 컨테이너

    출처 : docker 홈페이지 ( 오른쪽이 Docker 왼쪽이 VM )

     

    - 컨테이너란,

    서버 가상화 방법 중 하나이다. 가상화는 가상머신(VM)과 컨테이너 두개가 대표적이다.

     

    - 컨테이너란 도커 가상화 방법을 이용하여 만들어지는 독립적인 컴퓨팅 환경이다.

     

    - VMware나 VirtualBox와 같은 우리에게 친숙한 가상머신 방식은 호스트OS(서버의 원래 OS) 위에 게스트OS(가상화하여 만들어진 독립된 OS)를 가상화하여 사용하여 서버를 무겁고 느리게 만든다. 결국 원래 서버가 가지는 자원을 다 활용하기 어려움(이것을 가상화 오버헤드라 일컫습니다.)

     

    - 그러나 컨테이너는 추가적인 게스트OS를 생성하는 일 없이 프로세스를 격리하는 방식으로 작동됩니다.

    즉, 프로세스가 격리되어 만들어지는 독립적인 컴퓨터 공간 == 컨테이너

    (우리가 이 '프로세스를 격리'하는 방법에 대해 자세히 알 필요는 없습니다. 우리가 알아야 할 것은 이것을 이용하면 OS를 설치하기 위해 자원을 잡아먹는 일 없이, 프로세스별로 필요한 만큼만 자원이 잡히며 신속하게 가상화 환경을 구성할 수 있다는 것입니다)

     

    * 한 단계만 더 나아간다면, 도커는 가상머신처럼 완전히 OS부터 독립되어 만들어지지 않고 프로세스 단에서 환경이 분리되기 때문에, 보안에 취약합니다. 예시는 나중에 root권한을 다룰 때 보여드리겠습니다.

     

     

     

    3) 이미지

     

    - 컨테이너와 나란히 가장 중요한 개념이 이미지이다.

     

    - 이미지는 컨테이너(가상화된 독립환경)를 생성할 때 필요한 각종 설정값을 저장하고 있는 파일이다.

     

    - 컨테이너는 이미지로 '생성된' 가상환경을 일컫고, 우리는 수정한 컨테이너를 새로운 이미지로 다시 저장할 수 있다. (마치 git버전관리와 같죠)

     

    - 이것은 실행방법을 보면 아주 쉽게 와닿는다.

    docker pull redis 
    # pull 명령어로 redis 이미지를 다운받습니다.
    docker run --name temp_redis -it --rm redis 
    # run 명령어로 다운받은 redis이미지로부터 temp_redis라는 이름의 컨테이너를 생성합니다.

    이미지를 받아서 run으로 컨터에너를 생성하면 불과 1초 안에 독립된 가상환경이 생성되게 된다.

Designed by Tistory.