[Section 4] 배포 컨테이너 - Docker

Kim·2022년 12월 6일
0

Boot Camp

목록 보기
61/64

Docker

  • 다양한 종류의 애플리케이션을 신속하게 구축하고 테스트, 배포할 수 있는 소프트웨어 플랫폼
  • 하드웨어 자원을 모두 가상화 하지 않고 프로세스만을 격리시켜 빠르게 환경 구축 가능
  • 실행 환경에 구애받지 않고 애플리케이션을 실행할 수 있음

컨테이너 방식의 장점

  • 의존성 충돌 문제 해결
    ➡️ 컨테이너에서 실행 중인 애플리케이션들은 각자 고유의 의존성을 가짐

    • 개발과 배포 환경을 일치시킴
    • 수평 확장을 쉽게 해줌
    • 각 서버에 새로운 내용을 배포하기 쉽게 만들어줌

💡 의존 관계
어떤 프로그램(A) 실행에 다른 프로그램(B)이 반드시 필요한 경우, "프로그램 A는 프로그램 B에 의존 관계를 가지고 있다" 고 말한다.


A와 B 프로그램 모두 C 프로그램에 대해 의존 관계를 가질 때, 특정 버전을 요구하는 경우가 생길 수 있다.
A와 B가 각각 필요한 버전이 다를 경우, 일반적으로 한 컴퓨터 내에 여러 버전의 동일한 애플리케이션이 설치되지 않으므로 C에 의존 관계를 갖고 있는 A와 B 중 하나는 제대로 된 실행을 보장할 수 없다.
이를 의존성이 충돌한다고 한다.


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

➡️ 컨테이너를 이용하면 실행 환경이 격리된다.
A와 B를 각각의 실행 환경에서 독립적으로 실행시켜 각각 필요한 C 버전을 받을 수 있게 된다.

🤔 컨테이너는 무엇을 격리할까?
ㅤ☑️ 프로세스

  • 특정 컨테이너에서 작동하는 프로세스는 기본적으로 해당 컨테이너 내에만 액세스 가능
  • 컨테이너 안에서 실행되는 프로세스는 다른 컨테이너의 프로세스에 영향 X

    ☑️ 네트워크
  • 기본으로 컨테이너 하나에 하나의 IP 주소가 할당

    ☑️ 파일 시스템
  • 컨테이너 안에서 사용되는 파일 시스템은 구획화되어 있음
    ➡️ 해당 컨테이너에서의 명령이나 파일 등의 액세스를 제한 가능

Docker 핵심 키워드

컨테이너

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

이미지

  • 애플리케이션 및 애플리케이션 구성을 함께 담아 놓은 템플릿
  • 이미지를 이용해 여러 개의 컨테이너 생성 가능
    ➡️ 애플리케이션의 수평 확장 가능

레지스트리

  • 이미지를 저장하고 관리하는 공간
  • 특별히 다른 것을 지정하지 않는다면, 도커 허브(Docker Hub)를 기본 레지스트리로 설정
  • 대표적인 이미지 레지스트리
    • Docker Hub, Amazon ECR

레포지토리

  • 레지스트리 내에 도커 이미지가 저장되는 공간
  • 이미지 이름이 사용되기도 함
  • GitHub의 레포지토리와 유사하게 생각하면 됨

태그

  • 같은 이미지라고 할지라도 버전 별로 안의 내용이 조금은 다를 수 있음
  • 해당 이미지를 설명하는 버전 정보를 주로 입력
  • 특별히 다른 것을 지정하지 않는다면 latest 태그를 붙인 이미지를 가져옴

🤔 docker/whalesay:latest는 어떻게 읽을까?

  • Docker Hub라는 레지스트리에서
  • docker라는 유저가 등록한 whalesay 이미지 혹은 레포지토리에서
  • latest 태그를 가진 이미지

0개의 댓글