Docker

이정연·2023년 2월 2일
0

기본지식

목록 보기
7/10

무역항을 보면 수많은 컨테이너들을 볼 수 있다. 컨테이너는 대형 화물선에 실려서 다른 무역항으로 이동하게 되는데, 이러한 컨테이너들은 물자를 싣고 내릴 때에 선박의 입항시간을 획기적으로 단축시켜주었고, 인력을 대폭 감소시켜주었다.

이렇듯 개발자들도 이러한 컨테이너기술을 소프트웨어 배포에 사용하기 위해 Docker를 만들게 되었다.

컨테이너 기술의 장점은 실행 환경에 구애받지 않고 애플리케이션을 실행할 수 있다는 점이다.

컨테이너 방식의 장점

  • 의존성 충돌 문제를 해결해 준다.
  • 개발과 배포 환경을 일치시킨다
  • 수평 확장을 쉽게 해준다.
  • 각 서버에 새로운 내용을 배포하기 쉽게 만들어준다.
  • 컨테이너 기술은 애플리케이션을 컨테이너 내에 구성한다
  • 따라서 컨테이너에서 실행중인 애플리케이션은 어떠한 의존성도 공유하지 않고 각자 고유의 의존성을 포함할 수 있다.

컨테이너가 격리하는 것들

  • 하나의 컴퓨터 내에 서로 다른 버전의 php가 설치될 수 있는 것은, 컨테이너 하나하나가 애플리케이션 실행과 관련하여 높은 수준의 격리를 제공하기때문임

1. 프로세스

  • 특정 컨테이너에서 작동하는 프로세스는 그 컨테이너 안에서만 액세스 할 수 있다.
  • 컨테이너 안에서 실행되는 프로세스는 다른 컨테이너의 프로세스에 영향을 줄 수 없다.

2. 네트워크

  • 기본적으로 컨테이너 하나에 하나의 IP주소가 할당된다.

3. 파일 시스템

  • 컨테이너 안에서 사용되는 파일 시스템은 구획화 되어있다. 그래서 해당 컨테이너에서의 명령이나 파일등의 액세스를 제한할 수 있다.

개발과 배포 환경을 일치시킨다.

  • 여러 개발자가 하나의 애플리케이션을 만든다고 하면 보통 비슷한 개발환경을 구축한다.
  • 이 과정에서 런타임 환경의 버전을 비슷하게 맞춰야하며, 시스템 환경변수를 애플리케이션에 맞게 구성해야 한다.
  • 도커가 실행중이면, 어떠한 운영체제든 상관없이 즉시 배포된 프로그램을 설치할 수 있다.
  • OS에 상관없이 즉시 애플리케이션 실행환경을 만들 수 있다.
  • 개발을 컨테이너 위에서 진행하게 되면 모든 개발팀이 동일한 환경 하에 개발을 진행할 수 있다.

수평확장을 쉽게 해준다.

  • 서비스 제공자들은 보통 트래픽 분산을 위해 프록시 서버를 운영한다.

  • 프록시 서버는 여러대의 동일한 검색 서버중 한 군데를 이용할 수 있도록 돕는다.(로드 밸런서)

  • 트래픽의 증가는 서버의 증설을 야기한다.

  • 컨테이너 기술의 가장 큰 장점은 실행 환경의 일치이기 때문에 서버 증설시 컨테이너를 이용하면 매번 같은 환경으로 서버를 증설 시킬 수 있다.

  • step1. 동일한 애플리케이션 구성을 바탕으로 새로운 서버에 해당 애플리케이션을 컨테이너로 실행
  • step2. 로드밸런서에 이 서버 추가

Docker 핵심 키워드

컨테이너

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

이미지

실행된느 모든 컨테이너는 이미지로부터 생성
이미지는 애플리케이션 및 구성을 함게 담아놓은 템플릿임
이미지는 수정이 가능함

레지스트리

이미지가 저장되는 장소
대표적인 이미지 레지스트리로는 Docker Hub, Amazon ECR이 있다.

profile
반갑습니다.

0개의 댓글