ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Docker] 도커 기본 개념 정리
    네트워크 2024. 2. 29. 11:10

    Docker란?

    • 애플리케이션 구축, 구현 및 테스트를 위해 격리된 가상화 환경을 생성하는 서비스형 플랫폼
    • Docker는 컨테이너 엔진으로 리눅스 커널 기능을 사용하여 운영 체제 위에 컨테이너를 만들고, Docker 자체는 서비스의 컨테이너를 관리하는 데몬으로 실행된다.

     

    Docker Image란?

    • 파일로 어플리케이션 실행에 필요한 독립적인 환경을 포함하며, 런타임 환경을 위한 일종의 템플릿
    • 소스 코드, 라이브러리, 종속성, 도구 및 응용 프로그램을 실행하는데 필요한 기타 파일을 포함하는 불변(변경 불가) 파일
    • 이미지는 읽기 전용이므로 스냅샷이라고도 하며, 특정 시점의 애플리케이션과 가상 환경을 나타낸다.
    • 이러한 일관성은 도커의 큰 특징 중 하나로 개발자가 안정적이고 균일한 조건에서 소프트웨어를 테스트하고 실험할 수 있도록 한다.

     

    • 이미지는 템플릿일 뿐이므로 시작하거나 실행할 수 없다. 컨테이너는 실행 중인 이미지일 뿐이기 때문이다.
    • 컨테이너를 생성하면 쓰기 가능한 레이어가 불변 이미지(immutable image) 위에 추가된다. 즉, 컨테이너는 수정이 가능하다.
    • 컨테이너를 생성하는 이미지 베이스는 별도로 존재하며 변경할 수 없다.
    • 컨테이너 환경을 실행할 때는 기본적으로 컨테이너 내부에 해당 파일 시스템(도커 이미지)의 읽기-쓰기 복사본을 만든다. 이렇게 하면 이미지 전체 복사본을 수정할 수 있는 컨테이너 레이어가 추가된다.

     

    • 하나의 베이스 이미지에서 도커 이미지를 무제한으로 생성할 수 있다.
    • 이미지의 초기 상태를 변경하고 기존 상태를 저장할 때마다 추가 레이어가 있는 새 템플릿을 만든다.
    • 따라서 도커 이미지는 여러 개의 레이어로 구성될 수 있으며, 각각은 다르지만 이전 레이어에서 비롯된다.
    • 이미지 계층은 컨테이너 계층을 사용하여 가상 환경을 시작할 때 추가된 읽기 전용 파일을 나타낸다.

     

     

     

    • 위 이미지처럼 도커 이미지는 Dockerfile의  FROM에 명시한 베이스 이미지 위에 또 다른 레이어가 얹혀져 빌드된다.

     

    Docker Container란?

    • 사용자가 기본 시스템에서 애플리케이션을 분리할 수 있는 가상화된 런타임 환경
    • 중요 기능은 컨테이너 내부에서 실행되는 컴퓨팅 환경의 표준화 (standardization of the computing environment running inside the container.)
    • 응용 프로그램이 동일한 환경에서 작동하도록 할 뿐 아니라 다른 사람과의 공유도 단순화
    • 컨테이너는 자율적(autonomous)이기 때문에 strong isolation을 제공하며 서로 방해하지 않음(격리)

     

    Docker Image vs Container 

    • 컨테이너가 존재하려면 이미지를 실행해야 하는 반면, 이미지는 컨테이너 없이 존재할 수 있다. 따라서 컨테이너는 이미지에 종속되어 런타임 환경을 구성하고 애플리케이션을 실행하는 데 사용된다.
    • 도커 이미지는 도커 컨테이너에서 코드를 실행한다. 실행 중인 컨테이너를 만들려면 도커 이미지에 핵심 기능의 쓰기 가능 계층을 추가한다.(Writable container)
    • 도커 컨테이너는 실행 중인 이미지 인스턴스로 간주한다. 각각의 고유한 데이터와 상태를 가진 동일한 이미지에서 여러 개의 컨테이너를 만들 수 있다. 컨테이너 채택의 주요 이점은 개발, 운영 및 테스트의 표준화 및 단순화이다.

     

    Dockerfile, Image, Container

    • Dockerfile --(Build)--> Image --(Create)--> Container
    • Dockerfile은 도커 이미지를 빌드하는 방법을 정의하는 스크립트이다.
    • Docker에서는 환경 정보를 저장하는 파일을 Dockerfile이라고 한다. 이 Dockerfile에는 컨테이너의 구동에 필요한 정보가 작성되어 있다.
    • Docker file을 빌드해서 이미지를 생성한다.
    • 이미지는 특정 환경에 대한 정보가 변하지 않고 저장되는 정적인 형태의 파일이다.
    • 이미지를 동적인 형태로 변경한 것이 컨테이너이며, 컨테이너가 구동된다는 것은 우리가 필요로 하는 OS와 특정 환경이 경량 가상화로 구현된다는 것을 의미한다. 컨테이너는 어플리케이션을 실행할 격리된 환경이다.
    • 다시 말하면 컨테이너를 생성하는 것은 다른 환경과 분리시킨 환경을 만든다는 말이고, 컨테이너를 구동하는 것은 분리된 프로세스화하여 특정 환경을 만드는 것이다.

     

    ENTRYPOINT와 CMD

    • 해당 컨테이너가 수행하게 될 실행 명령을 정의하는 선언문
    • Dockerfile의 가장 마지막 부분 쯤에 선언

     

     

    Docker Container와 Image란 무엇인가?

    목차 LIST Docker란? Docker는 애플리케이션 구축, 구현 및 테스트를 위해 격리된 가상화 환경을 생성하는 서비스형 플랫폼이다. Docker는 컨테이너 엔진으로 리눅스 커널 기능을 사용하여 운영 체제

    sunrise-min.tistory.com

     

    Dockerfile Entrypoint 와 CMD의 올바른 사용 방법

    ENTRYPOINT 와 CMD 는 무엇인가 ENTRYPOINT 와 CMD는 해당 컨테이너가 수행하게 될 실행 명령을 정의하는 선언문이다. 즉, 컨테이너가 무슨 일을 하는지 결정하는 최종 단계를 정의하는 명령이라고 생각

    bluese05.tistory.com

     

     

     

Designed by Tistory.