2. 도커 시작하기

ggam26·2021년 2월 15일
0

도커 : 2013년 3월 Docker, Inc에서 출시한 오픈 소스 컨테이너 프로젝트

도커 이미지에서 도커 이해하기
: 고래는 서버에서 여러 개의 컨테이너(이미지)를 실행하고 이미지 저장과 배포(운반)

복잡한 리눅스 애플리케이션을 컨테이너로 묶어서 실행할 수 있고 개발, 테스트, 서비스 환경을 하나로 통일하여 효율적으로 관리할 수 있기 때문에 인기를 끄는 중이다.

리눅스 커널에서 제공하는 컨테이너 기술을 이용하여 컨테이너(이미지)를 Docker Hub에서 전세계 사람들과 공유가능!
(Docker Hub는 GitHub와 비슷한 방식이다.)

가상머신

가상머신 : 컴퓨팅 환경을 소프트웨어로 구현한 것, 즉 컴퓨터를 에뮬레이션하는 소프트웨어

가상 머신에 각종 서버 프로그램, DB등을 설치하여 애플리케이션이나 웹사이트를 실행
미리 구축한 가상 머신 이미지를 여러 서버에 복사하여 실행하면 이미지 하나로 서버를 계속 만들어낼 수 있다.

가상화 기술을 이용해 서버를 임대해주는 서비스가 클라우드 서비스!


출처 : https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html

가상머신은 완전한 컴퓨터로 항상 Guest OS를 설치하야 한다.
(*하이퍼바이저 : 하드웨어에서 시스템을 운영 체제와 리소스를 분리해 가상머신에 할당하여 가상 머신을 생성하고 구동하는 소프트웨어)

단점

  • 느리다.
  • 컴퓨터를 통째로 만들어 내다보니 각종 성능 손실 발생
  • 이미지 안에 OS가 포함되기 때문에 이미지 용량이 크다.
    -오픈소스 가상화 소프트웨어는 OS 가상화에만 주력하여 배포와 관리 기능이 부족하다.

리눅스 컨테이너(LXC)

컨테이너 안에 가상공간을 만들지만 실행 파일을 호스트에서 직접 실행한다.
LXC는 cgroups와 namespace를 결합하여 애플리케이션을 위한 고립된 환경을 제공한다.

즉, 가상화가 아닌 격리!!!

도커는 리눅스 컨테이너를 사용한다.
초기에는 LXC을 기반으로 구현했지만 버전 0.9부터는 libcontainer를 개발하여 사용(실행 옵션으로 선택 가능)
컨테이너는 가상화보다 훨씬 가벼운 기술임.

도커의 특징


출처 : https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html

  1. 도커는 게스트 OS를 설치하지 않는다.
  • 이미지에 서버 운영을 위한 프로그램과 라이브러리만 격리해서 설치
  • 이미지 용량이 크게 줄어듦
  • 호스트와 OS 자원을 공유
  1. 도커는 하드웨어 가상화 계층이 없다.
  • 메모리 접근, 파일 시스템, 네트워크 전송 속도가 가상머신에 비해 월등히 빠르다.
  • 호스트와 도커 컨테이너 사이의 성능 차이가 크지 않다.
  1. 이미지 생성과 배포에 특화되어 있다.

  2. 이미지 버전 관리도 제공하고 이미지를 올리고 받을 수 있다.(Docker Hub)

  3. 다양한 API를 제공하여 원하는 만큼 자동화 가능하다.
    ->개발과 서버 운영에 매우 유용하다.

이미지 : 서비스 운영에 필요한 서버 프로그램, 소스 코드, 컴파일된 실행 파일을 묶은 형태
*저장소에 이미지 형태로 PULL/PUSH

컨테이너 : 이미지를 실행한 상태

이미지로 여러 개의 컨테이너를 만들 수 있다.

+)운영체제로 치면 이미지는 실행파일 / 컨테이너는 프로세스!

도커의 이미지 처리 방식

도커는 베이스 이미지에서 바뀐 부분만 이미지로 선정한다.
컨테이너로 실행할 때는 베이스 이미지와 바뀐부분을 합쳐서 실행한다.
Docker Hub 및 개인 저장소에서 이미지를 공유할 때는 바뀐 부분만 주고 받는다.
*각 이미지는 의존 관계 형성

서비스 운영 환경과 도커

지금까지의 서버 환경은 서버 구입과 설치에 돈이 많이 들고 시간이 오래 걸린다.
가상화가 발전하며 클라우드 환경으로 변화중이다. 따라서 가상 서버를 임대하여 사용한 만큼만 요금을 지불한다.
이젠 자동으로 서버를 추가하고 삭제할 수 있다.

하지만 서버 대수가 많아지면서 사람이 일일이 세팅하기 힘들어짐
-> Immutable Infrastructure라는 패러다임 등장

Immutable Infrastructure
호스트 OS와 서비스 운영환경(서버 프로그램, 소스 코드, 컴파일 된 바이너리)을 분리
한번 설정한 운영 환경은 변경하지 않는다(Immutable)는 개념

서비스 운영 환경을 이미지로 생성한 뒤 서버에 배포하여 실행
서비스가 업데이트되면 운영 환경 자체를 변경하지 않고, 이미지를 새로 생성하여 배포한다.
->서비스 운영 환경 이미지를 한 번 쓰고 버림

도커는 Immutable Infrastructure를 구현한 프로젝트이다.

도커는 서비스 운영환경을 묶어서 손쉽게 배포하고 실행하는 경량 컨테이너 기술!

0개의 댓글