배포 컨테이너

김성수·2022년 12월 7일
0

SEB_BE

목록 보기
23/31

Docker

컨테이너

무영항에서 물류를 싣고 나를 때 쓰는 것을 보고, 개발자들이 소프트웨어 수송(배포)를 하기위해 생겨난 것. 그 결과로 생긴 것이 리눅스 컨테이너(lxc)이다.

  • 도커(Docker)는 2013년에 Doker Hub라는 소프트웨어 저장소와 함께 빠르게 성장했다. 그 결과로 개발자들은 보다 쉽게 애플리케이션을 포장하고, 컨테이너 방식으로 실행할 수 있게 되었다.


이거 원피스의 그랜드라인 넘을 때 등장한 고래 라분 같이 생김..

컨테이너 기술의 장점!!!

실행 환경에 구애받지 않고 애플리케이션을 실행할 수 있다.

이를 반대로 생각하면, 원래는 애플리케이션 실행하는데 있어 환경에 구애를 받는다는 말이다.

컨테이너 방식의 장점

의존성 충돌 문제를 해결해준다.
1. 개발과 배포 환경을 일치해준다.
2. 수평 확장을 쉽게 해준다.
3. 각 서버에 새로운 내용을 배포하기 쉽게 만들어준다.

의존성 충돌?

워드프로세스가 php7에 대해 의존관계를 가지고,
같은 PC에서 drupal이라는 프로그램은 php6에 의존관계를 가진다고 가정하자.
동일한 PC에 여러 버전의 애플리케이션이 설치되지 않으므로, 워드프로세스와 drupal은 충돌할 것이다. 이를 의존성이 충돌한다고 하는데, 컨테이너 기술이 이를 해결해준다.

컨테이너 기술은 애플리케이션을 컨테이너 내에서 구성한다.
즉, 컨테이너에서 실행 중인 애플리케이션은 어떠한 의존성도 공유하지 않고 각자 고유의 의존성을 포함하고 있다.
각 컨테이너가 철저하게 실행 환경이 격리되어있기 때문에 가능한 것이다.

컨테이너가 격리하는 것.

  1. 프로세스
  • 특정 컨테이너에서 작동하는 프로세스는 기본적으로 그 컨테이너 안에서만 액세스 가능하다.
  • 컨테이너 안에서 실행되는 프로세스는 다른 컨테이너의 프로세스에게 영향을 줄 수 없다.
  1. 네트워크
  • 기본적으로 컨테이너 하나에 하나의 IP주소가 할당되어 있다.
  1. 파일 시스템
  • 컨테이너 안에서 사용되는 파일시스템은 구획화되어 있다. 그렇기 때문에 해당 컨테이너에서의 명령이나 파일 등의 액세스를 제한할 수 있다.

컨테이너 기술인 Docker와 VM과는 엄연히 다르다!

컨테이너 방식의 장점(1)

의존성 충돌 문제 해결의 1번 "개발과 배포 환경을 일치해준다."

개발자가 하나의 애플리케이션 개발하기 위해 환경설정을 세팅하는데 시간이 걸리고, 각자 운영체제가 다르다면, 또 다른 방식으로 환경을 설정해야한다. 환경설정까지만 해도 시간이 많이 걸린다..
이를 도커가 해결해준다. 어떠한 운영체제든지 하나의 명령어로 통일된다.
따라서 도커는 다음과 같은 문제를 해결할 수 있다.

  • OS에 상관없이 즉시 애플리케이션 실행 환경을 만들 수 있다.

  • 개발을 컨테이너 위에서 진행할 경우, 모든 개발팀이 동일한 환경 하에 개발을 진행 할 수 있다.

  • 배포시의 문제 또한 서버에 파일 하나하나를 업로드하는 방식보다는 컨테이너에 담긴 애플리케이션을 실행하는 방식으로 서비스를 제공한다.

컨테이너 방식의 장점(2)

의존성 충돌 문제 해결의 2번 "수평 확장을 쉽게 해준다."
컨테이너 기술의 가장 큰 장점은 실행 환경의 일치이다.
많은 트래픽으로 인한 서버 증설에 컨테이너 기술을 아주 활발하게 이용되고 있다.
동일한 애플리케이션 구성(이미지)을 바탕으로 새로운 서버에 해당 애플리케이션을 컨테이너로 실행하고, 로드 밸런서에 이 서버를 추가하기만 하면 된다.

이러한 기술을 응용하여, 새로운 서버의 애플리케이션을 여러 서버 중 몇 대에만 운영하여 테스트하는 방법도 가능하다.
이를 통해 새 버전의 애플리케이션에서 발생할 수 있는 문제들을 미리 확인하고, 이러한 문제가 사용자 전체에게 영향을 끼치지 않도록 만들 수 있다.

Docker 핵심 키워드

컨테이너

애플리케이션이 의존성, 네트워크 환경, 파일 시스템에 구애받지 않고, 도커라는 기술에 실행될 수 있도록 만든 애플리케이션 상자

이미지

애플리케이션 및 애플리케이션 구성을 함께 담아놓은 템플릿으로써, 이를 이용해 즉시 컨테이너를 만들 수 있다.

레지스트리

이미지는 레지스트리에 저장된다.

profile
쌩수 Git >> https://github.com/SsangSoo?tab=repositories

0개의 댓글