docker

Jeon seong jin·2020년 2월 9일
1

Docker

목록 보기
1/1

docker?

  • 도커는 오픈 소스 컨테이너 프로젝트, 현재 전세계적으로 큰 인기를 끌고 있음
  • AWS,google cloud platform, ms Azure등의 클라우드 서비스에서 공식 지원

도커를 사용하는 이유?

  • 복잡한 리눅스 애플리케이션을 컨테이너로 묶어서 실행할 수 있다.
  • 개발,테스트,서비스 환경을 하나로 통일하여 효율적으로 관리할 수 있기 때문!
  • 컨테이너(이미지)를 전 세계 사람들과 공유

이러한 기술이 어떻게 가능?

  • 리눅스 커널에서 제공하는 컨테이너 기술을 이용
  • gitHub와 비슷한 방식의 Docker Hub 제공!

그렇다면 컨테이너 기술은 무엇인가요?

  • 컨테이너는 가상화보다 훨씬 가벼운 기술!

가상화는 또 무엇인가요?

  • 먼저, 역사를 보자면 컴퓨터 안에서 컴퓨터를 만들어내기 위한 시도들을 하였다.(ex.패러럴즈)

  • 컴퓨터 성능이 급격히 좋아지면서 pc에서도 흔히 사용, 그와 비슷하게 서버 성능도 더욱 더 좋아짐

  • 그러다 보니 대부분의 시간을 서버가 놀고 있었다. 서버에 가장 머신을 여러 개 띄워서 일을 더 시키자!

  • 그리고 it기술이 보편화되면서 서버도 많아졌다. 많아 졌으니 서버 자체를 가상 머신에 집어 넣어서 구동하자라는 생각을 하며 가상머신에 각종 서버 프로그램,db등을 설치하여 애플리케이션이나 웹 사이트를 실행

  • 미리 구축한 가상 머신 이미지를 여러 서버에 복사하여 실행 이미지 하나로 서버를 계속 만들어낼 수 있음

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

  • 컴퓨터를 통째로 만들어내다 보니 각종 성능 손실이 발생 현저히 속도가 느려진다.

가상머신의 문제점

  • 호스트와 커널을 공유하는 반가상화 기술이 등장!(그래도 느린건 똑같다...)

가상 머신의 이미지

  • 이미지 안에 OS가 포함되기 때문에 이미지 용량이 커진다...(네트워크로 가상화 이미지를 주고 받는 건 꽤 부담스럽다...)

문제점 해결을 위한 방안

  • 오픈소스 가상화 소프트웨어는 OS 가상화에만 주력(배포와 관리 기능이 부족)
  • 가상 머신의 성능 문제가 있다 보니 리눅스 컨테이너가 나오게 되었다.
  • 컨테이너 안에 가상 공간을 만들지만 실행 파일을 호스트에서 직접 실행
  • 위에 기술들은 리눅스 커널의 cgroups와 namespaces가 제공하는 기술!
  • 가상화가 아니라 격리를 시켜보자!

리눅스 컨테이너

컨테이너이미지

도커는 리눅스 컨테이너를 사용!
1. 초기에는 LXC(리눅스 컨테이너)를 기반으로 구현
2. 버전 0.9부터는 LXC를 대신하는 libcontainer를 개발하여 사용
3. 실행 옵션으로 선택 가능

도커의 특징

도커의 특징

도커는 게스트OS를 설치하지 않는다!
1. 이미지에 서버 운영을 위한 프로그램과 라이브러리만 격리해서 설치
2. 이미지 용량이 크게 줄어든다.
3. 호스트와 OS자원(시스템 콜)을 공유

도커의 성능

도커의 성능

도커는 이미지의 생성과 배포에 특화 되어있다.

  • 이미지 버전 관리도 제공하고 중앙 저장소에 이미지를 올리고 받을 수 있음.(push/pull)

  • gitHub와 비슷한 형태로 도커 이미지를 공유하는 Docker Hub 제공(github처럼 유료 저장소도 제공)

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

그렇다면 이미지와 컨테이너는 뭐가 다른건가?

  • 도커 이미지 : 이미지는 서비스 운영에 필요한 서버 프로그램, 소스코드, 컴파일된 실행 파일을 묶은 형태

  • 저장소에 올리고 받는건 이미지(push/pull)

  • 컨테이너는 이미지를 실행한 상태!

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

  • 운영체제로 치면 이미지는 실행파일이고 컨테이너는 프로세스

도커는 이미지의 바뀐 부분을 어떻게 관리하나?(도커의 이미지 처리 방식)

  • 유니온 파일 시스템 형식(aufs,btrfs,devicemapper)

도커의 이미지 처리 방식

  • Docker Hub 및 개인 저장소에서 이미지를 공유할 때 바뀐 부분만 주고 받음
  • 각 이미지는 의존 관계를 형성한다.

서버 환경

  • 지금까지는 물리 서버를 직접 운영했음

  • 서버 구입과 설치에 돈이 많이 들고 시간이 오래 걸림

  • 하지만 가상화가 발전하면서 클라우드 환경으로 변화

  • 가상 서버를 임대하여 사용한 만큼만 요금을 지불

  • 클릭 몇 번 만으로 가상 서버를 생성

  • 이제는 자동으로 서버를 추가하고 삭제까지 가능하다.. 서버 대수가 많아지면서 사람이 일일이 세팅하기 힘들어짐

어려움에 대한 극복

  • immutable infarstructure라는 패러다임이 나옴
profile
-기록일지

0개의 댓글