Docker 이해하기

Purple·2021년 12월 3일
0

TIL

목록 보기
67/73

1. Container

  • 애플리케이션이 의존성, 네트워크 환경, 파일 시스템에 구애받지 않고, 도커라는 기술 위에 실행될 수 있도록 만든 애플리케이션 상자
  • 도커에 의해 관리/제공되는 (도커가 호스팅하는) 애플리케이션 단위이다.

2. Image

  • 애플리케이션 및 애플리케이션 구성을 함께 담아놓은 템플릿으로, 이를 이용해 즉시 컨테이너를 만들 수 있다. 실행되는 모든 컨테이너는 이미지로부터 생성된다.
  • 이미지를 이용해 여러개의 컨테이너를 생성 할 수 있다. 이를 이용해 애플리케이션의 수평 확장이 가능하다.
  • 이미지는 기본이미지(base image)로부터 변경사항을 추가/커밋해서 또 다른 이미지를 만들 수 있다. 예를들어, node.js로 작성된 애플리케이션을 이미지로 만들고 싶은 경우, node.js 이미지를 기본 이미지로 삼고 내가 만든 애플리케이션을 추가해넣고, 이미지화 할 수 있다.

3. Registry

  • 이미지는 레지스트리에 저장된다. 대표적인 이미지 레지스트리로는 Docker Hub, Amazon ECR이 있다. 도커 CLI에서 이미지를 이용해 컨테이너를 생성할 때, 호스트 컴퓨터에 이미지가 존재하지 않는다면, 기본 레지스트리로부터 다운로드 받게 된다.

4. 컨테이너 방식의 장점

  1. 의존성 충돌 문제를 해결해준다. : 컨테이너 기술은 애플리케이션을 컨테이너 내에 구성한다. 즉, 컨테이너에서 실행 중인 애플리케이션은 어떠한 의존성도 공유하지 않고, 각자 고유의 의존성을 포함하고 있다.
  2. 개발과 배포 환경을 일치시킨다. : OS에 상관없이 즉시 애플리케이션 실행 환경을 만들수 있다. 개발을 컨테이너 위에서 진행할 경우, 모든 개발팀이 동일한 환경 하에 개발을 진행할 수 있다.
  3. 수평 확장을 쉽게 해준다.
  4. 각 서버에 새로운 내용을 배포하기 쉽게 만들어준다.

5. 컨테이너가 독립적으로 소유하고 있는 3가지 자원

5-1. 프로세스

  • 특정 컨테이너에서 작동하는 프로세스는 기본적으로 그 컨테이너 안에서만 액세스 할 수 있다.
  • 컨테이너 안에서 실행되는 프로세스는 다른 컨테이너의 프로세스에게 영향을 줄 수 없다.
  • 프로세스는 쉽게.. 실행중인 프로그램이라고 생각하면 된다.

5-2. 네트워크

  • 기본으로 컨테이너 하나에 하나의 IP 주소가 할당되어 있다. 즉, 각 컨테이너의 ip 주소는 다르다!

5-3. 파일시스템

  • 컨테이너 안에서 사용되는 파일 시스템은 구획화되어 있다. 그래서 해당 컨테이너에서의 명령이나 파일 등의 액세스를 제한 할 수 있다.
  • 그래서 같은 프로그램 파일이지만 다른 버전의 파일을 다른 컨테이너에 설치할 수 있는 것이다!
profile
다시 보면, 더 많은 것들이 보인다.

0개의 댓글