컨테이너 개념

조수민·2024년 2월 14일
2

AWS과정

목록 보기
17/18

런타임 VS 프로세스

  • 프로세스 : 실행 중인 프로그램
  • 런타임 : 프로그램이 실행되는 동안의 시간적인 개념

런타임 VS 컴파일타임

  • 컴파일타임 : 소스코드 작성 후 컴파일이라는 과정을 통해 기계어 코드로 변환되어 실행 가능한 프로그램이 되는데, 이러한 편집 과정
  • 런타임 : 컴파일 후 프로그램이 사용자에 의해 실행될 때 이 프로그램이 동작되는 시간

런타임 오류 VS 컴파일타임 오류

  • 컴파일타임 오류 : 스택스(구문)오류, 타입체크 오류
  • 런타임 오류 : 0 나누기 오류, 널 참조 오류, 메모리 부족 오류, 무한루프 오류, 컴퓨터 문제로 일어나는 오류
    ▶ 논리 에러 : 작성자에 의해 발생, 덧셈인데 뺄셈을 하는 논리적 실수
    ▶ 시스템 에러 : 운영체제, 하드웨어(컴퓨터) 문제로 프로그램이 정상적으로 작동하지 못해 발생하는 에러

라이브러리 VS 런타임 라이브러리

  • 라이브러리 : 개발자가 코드를 작성할 때 사용하는 코드의 모음
  • 런타임 라이브러리 : 프로그램이 실행될 때 필요한 라이브러리, 프로그램 실행 중에 호출되어 사용됨.

컨테이너

: 컨테이너 이미지를 실행하는 데 필요한 소프트웨어 패키지
▶ 컨테이너라는 환경을 만들어주는 것.

도커 컨테이너가 실제 프로세스와 어떤 차이가 있는 지

  • 도커 컨테이너 : 가상화된 환경에서 프로세스를 실행
  • 실제 프로세스 : 호스트 운영 체제에서 직접 실행
    1. 독립성과 격리
      : 도커 컨테이너는 호스트 시스템에서 실행되는 프로세스와 격리된 환경을 제공
      ▶컨테이너가 자체 파일 시스템, 네트워크 인터페이스, 프로세스 공간 등을 가지고 있어 마치 가상 머신처럼 독립적으로 실행 가능
    2. 이식성
      : 도커 컨테이너는 어디서든 실행될 수 있는 포괄적인 환경을 제공 → 이식성 높임
      ▶컨테이너가 필요한 모든 종속성과 환경 설정을 포함하고 있기 때문에 특정 환경에 대한 의존성을 줄임
    3. 가상화 수준
      : 도커 컨테이너는 일반적으로 운영 체제 수준에서 가상화 제공
      ▶호스트 시스템의 커널을 공유하지만 파일 시스템 및 네트워크를 격리하는 것을 의미
      ▶실제 프로세스 : 운영 체제 수준의 가상화를 사용하지 않고 호스트 시스템에서 직접 실행
    4. 리소스 관리
      : 도커 컨테이너는 리소스 사용량을 제어/관리하는데 있어서 더 많은 유연성 제공
      ▶컨테이너는 메모리, CPU 등의 리소스를 할당/제한 가능
      ▶실제 프로세스 : 리소스 제어가 더 제한적일 수 있음
    5. 관리 및 배포 용이성
      : 도커 컨테이너는 이미지를 사용하여 프로세스 포장/배포 가능
      ▶애플리케이션을 더 쉽게 관리하고 확장할 수 있도록 도움
      ▶실제 프로세스 : 배포 및 관리 작업이 더 복잡할 수 있음

도커 컨테이너가 기존의 가상환경과 다른 점

  • 가상 머신 : 물리적인 하드웨어를 가상화하는 기술
    : 기존의 서버에 하이퍼바이저를 설치, 그 위에 가상 OS와 APP를 패키징한 VM을 만들어 실행하는 방식인 하드웨어 레벨의 가상화 지원

    • 한 개의 서버를 여러 개의 서버처럼 활용 가능
    • 환경 시작에 걸리는 오버헤드가 커지기 때문에 무겁고 느림.
    • 도커보다 고립성 좋음.- 도커 컨테이너 : 하드웨어 에뮬레이션 없이 리눅스 커널을 공유해서 바로 프로세스를 진행
  • 도커 : 프로세스의 실행 환경을 가상화

  • 컨테이너
    : 애플리케이션 레벨에서 필요한 소스코드와 관련 라이브러리들을 하나로 패키징하여 별도의 실행 환경을 만든 것
    : 운영체제를 제외한 나머지 애플리케이션 실행에 필요한 모든 파일을 패키징한다는 점에서 OS레벨 가상화 지원

    • 여러 개의 컨테이너가 동일한 호스트에서 커널을 공유하며 실행
    • 커널 공유하지만 개별적인 '사용자 공간'(user space)가짐
    • 커널 자체적으로 가지지 않음(공유만 함)
    • 가볍고 실행 시 적은 리소스 사용

▶보안적으로 가상머신이 더 안전 : 도커 컨테이너는 커널을 공유하기 때문

▶리소스를 가상화하고 고립화 시키는 측면에서는 동일

<커널의 기능>
1. 프로세스 관리 : 프로세스 및 스레드 생성/삭제, 스케줄링
2. 파일 관리 : 디스크 상의 파일 관리
3. 메모리 관리 : 메인 메모리를 효과적으로 사용하기 위해 관리
4. 통신 관리 : 네크워크를 통해 정보를 주고 받을 수 있도록 관리
5. 주변 장치 관리 : 입출력 장치를 사용할 수 있도록 관리

<추가 개념>

  • 프로세스 (Process)
    : 실행 중인 프로그램
    즉, 컴퓨터에서 실행되는 프로그램이 메모리에 로드되어 실행되고 있는 상태
    ▶각각의 프로세스는 프로그램의 인스턴스로, 각각의 프로세스는 독립적인 메모리 공간을 할당받아 실행
    ▶각자의 실행 상태, 메모리 할당, 파일 및 자원 사용 등을 관리
    ▶각 프로세스는 다른 프로세스와 독립적으로 실행되며, 다른 프로세스의 영향을 받지 않음.
  • 런타임 (Runtime)
    : 프로그램이 실행되는 동안의 시간
    즉, 프로그램이 시작되어 종료될 때까지의 시간 동안
    ▶일반적으로 런타임은 컴퓨터 프로그램이 실행되는 동안에 발생하는 모든 동작을 포함
    ▶프로그램이 메모리에 로드되고 실행되는 동안의 모든 활동
    ▶컴퓨터 시스템이나 특정 프로그래밍 환경에서 프로그램이 실행되는 동안에 발생하는 이벤트와 작업을 다루는 시간적 개념
  • 라이브러리 (Library)
    : 프로그래머가 개발하는 소프트웨어에 사용할 수 있는 코드의 모음
    ▶코드 모음에는 함수, 클래스, 메서드 등이 포함될 수 있음
    ▶보통 컴파일된 형태로 제공되며, 개발자는 필요할 때 이를 프로그램에 링크하여 사용
    ▶코드 재사용성 ↑
    ▶개발 시간 ↓
  • 런타임 라이브러리 (Runtime Library)
    : 프로그램이 실행될 때 필요한 라이브러리
    ▶프로그램의 실행 중에 호출되어 사용
    ▶주로 프로그램이 실행될 때 동적으로 로드되며, 실행 중에 필요한 기능을 제공
    EX. 메모리 할당 및 해제, 파일 입출력, 네트워크 통신과 같은 기본적인 작업을 수행하는 함수들이 포함될 수 있음

출처
https://fvor001.tistory.com/89
https://spaghetti-code.tistory.com/35
https://www.44bits.io/ko/post/is-docker-container-a-virtual-machine-or-a-process
https://m.blog.naver.com/appeal7712/221657263538

profile
다방면 천재되기

0개의 댓글

관련 채용 정보