ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 컨테이너, Docker 기초 학습
    학습 관련 기록 2023. 4. 3. 02:09

    컨테이너란?

    Container는 애플리케이션이 특정 컴퓨팅 환경이 아닌 다른 컴퓨팅 환경에서도 빠르고 안정적으로 실행될 수 있도록 코드와 모든 종속성들을 패키징하는 소프트웨어의 표준 단위를 의미한다.

     

    컨테이너와 가상 머신의 비교

    컨테이너는 가상 머신과 비교될 수 있다. 두 기술은 리소스의 격리나 할당에 있어 비슷한 이점을 갖지만, 작동 방식에서 차이를 보인다.

     

     

    컨테이너

    컨테이너는 코드와 종속성들이 한 번에 패키징된 애플리케이션 계층이 추상화된 형태로, 다음과 같은 특징을 갖는다.

     

    - 애플리케이션의 실행에 필요한 라이브러리, 바이너리, 기타 구성 파일 등을 패키징한다.

    - 여러 개의 컨테이너가 동일한 머신에서 실행될 수 있다.

    - 격리된 프로세스로 실행되는 다른 컨테이너와 OS 커널을 공유할 수 있다.

    - 컨테이너 이미지의 크기는 일반적으로 수십 MB 크기로, 가상 머신보다 공간을 적게 차지한다.

     

    가상 머신

    가상 머신은 하나의 서버가 여러 대의 서버로 전환되는 방식으로 물리적 하드웨어가 추상화된 형태로, 다음과 같은 특징을 갖는다.

     

    - 각 가상 머신은 운영체제를 포함하여 애플리케이션, 필요 바이너리와 라이브러리들의 전체 복사본을 포함한다.

    - 기존 서버에 하이퍼바이저(Hypervisor)를 설치하고, 그 위에 가상 OS와 애플리케이션들을 패키징해 실행한다.

    - 단일 가상 머신은 일반적으로 수십 GB의 크기를 갖는다.

    - 단일 머신에서 여러 가상 머신을 실행할 수 있다.

     

    컨테이너가 가상 머신에 비해 갖는 이점은?

    - 컨테이너는 운영체제를 제외하고 애플리케이션 실행에 필요한 파일만을 패키징한 형태로, '하드웨어 레벨'의 가상화 방식인 가상 머신과는 달리 하이퍼바이저나 가상 OS가 없는 'OS 레벨'의 가상화 구조이기 때문에 시스템에 대한 요구사항이 적다.

    - 컨테이너에는 OS가 포함되지 않기 때문에 운영체제 부팅이 필요하지 않으므로 서비스 시작 시간이 매우 빠르다. 

     

    즉 컨테이너는 기존의 가상 머신에 비해 가볍고 빠르게 동작이 가능하다는 특징이 있어 마이크로서비스 구축에 최적의 성능을 낼 것이라고 기대할 수 있다.

     

    Docker란?

    Docker Inc.에서 제공하는 Docker는 Linux에서 애플리케이션을 컨테이너화하기 위한 오픈 소스 플랫폼이다. Docker를 사용해 애플리케이션과 인프라(infrastructure)를 분리해 인프라를 관리하고 소프트웨어를 제공할 수 있다.

     

    Docker 이미지

    Docker 이미지는 Docker 컨테이너를 생성하기 위한 명령어가 포함된 읽기 전용 템플릿이다. 이미지는 추가적인 사용자 정의가 적용되거나 및 다른 이미지를 기반으로 정의될 수 있다. 예를 들어, ubuntu 이미지를 기반으로 하면서 Apache 웹 서버와 애플리케이션 실행에 필요한 구성 세부 정보들(configuration details)을 포함한 이미지를 빌드할 수 있다.

     

    Docker 컨테이너

    Docker 컨테이너는 Docker 이미지의 실행 가능한 인스턴스로, 다음과 같은 특징을 갖는다.

     

    - Docker API 또는 CLI를 사용해 컨테이너를 생성하거나 시작, 중지, 이동 또는 삭제할 수 있다.

    - 하나 이상의 네트워크나 저장소에 연결될 수 있어 로컬 머신, 가상 머신에서 실행되거나 클라우드에 배포될 수 있다.

    - 일반적으로 다른 컨테이너나 호스트 머신(host machine)으로부터 격리되어 있으며, 자체적으로 소프트웨어, 바이너리, 구성을 실행한다. 격리 정도는 제어될 수 있다.

    - 컨테이너가 제거되면 영구 저장소에 저장되지 않은 상태 변경 사항은 모두 사라진다.

     

    Dockerfile

    Docker 이미지를 빌드하기 위해 Dockerfile을 만들 수 있다. Dockerfile을 구성하는 각 명령어 구문들은 Docker 이미지를 만들고 실행하는 데 필요한 단계를 정의한다. Dockerfile 내 명령어를 변경하고 이미지를 다시 빌드하면 변경된 레이어만 다시 빌드된다.

     

    References

    - Docker Container

    - Docker Docs - Docker overview

    - Docker Docs - Get started

    - Red Hat - Docker란?

    - 4차산업 다이어리 :: 기업 및 산업에 관한 글 - 클라우드 가상화 기술 정리 2

     

     

     

     

    '학습 관련 기록' 카테고리의 다른 글

    메가테라 웹 개발자 과정 2주차 강의 이론 정리  (0) 2022.05.16
    컴퓨터의 이해  (0) 2022.05.08

    댓글

Designed by Tistory.