도커란 무엇일까

1. 컨테이너 기술은 무엇일까?

  1. 컨테이너 기술은 애플리케이션을 가상화하여 격리된 환경에서 실행할 수 있게 해주는 기술이다.

  2. 컨테이너는 호스트 운영체제의 커널을 공유하면서도 프로세스, 네트워크, 스토리지 등의 리소스를 분리하여 애플리케이션을 패키징하고 실행한다.

  3. 여기서 운영체제의 구조와 역할에 대해 좀 더 설명하겠다.

운영체제의 구조와 역할

  • 운영체제 커널은 하드웨어 자원을 관리하고 프로세스 실행, 메모리 관리, 파일 시스템 접근 등의 핵심 기능을 제공한다.

가상머신
컨테이너

물리적 머신의 디지털 사본이다. 동일한 호스트 운영체제에서 고유한 개별 운영체제가 실행되는 여러 가상 머신을 보유하는 것에 목적을 둔다.

application에 이동가능하도록 만들어 모든 디바이스에서 동일한 코드를 실행 할 수 있게 하는 것에 목적을 둔다.

  • 가상머신게스트 운영체제 전체를 가상화하여 하이퍼바이저 위에서 실행됩니다. 참고로 게스트 운영체제란 PC에 추가적으로 설치될 운영체제를 말한다.

  • 반면 컨테이너호스트 운영체제의 단일 커널을 공유한다.

    1. 프로세스 격리 컨테이너는 자체 프로세스 트리를 갖는다. 호스트와 다른 컨테이너의 프로세스를 볼 수 없다.

    2. 네트워크 격리 가상 네트워크 인터페이스를 통해 네트워크를 격리다. 각 컨테이너는 자체 IP 주소, 포트 범위, 라우팅 테이블 등을 갖는다.

    3. 스토리지 격리 유니온 파일 시스템을 사용하여 스토리지를 격리한다. 컨테이너는 호스트 파일 시스템의 특정 부분에만 접근할 수 있다.

  • 이러한 격리를 통해 컨테이너는 의존성 충돌 없이 애플리케이션과 그 실행 환경 전체를 패키징할 수 있다. 컨테이너는 어디서나 동일하게 실행되며, 가상머신보다 오버헤드가 적어 더 효율적이다.

2. 도커란 무엇일까?

Docker는 대표적인 컨테이너 기술 플랫폼이다.

3. 도커 파일, 도커 이미지, 도커 컨테이너의 개념은 무엇일까?

  • 도커 파일(Dockerfile): 도커 이미지를 만들기 위한 설명서 역할을 한다. 이미지 빌드 과정을 정의한다.

  • 도커 이미지: 애플리케이션 코드, 라이브러리, 런타임 환경 등을 단일 파일로 패키징한 것이다. 읽기 전용 템플릿 역할을 한다.

  • 도커 컨테이너: 이미지를 실행한 인스턴스이다. 컨테이너는 격리된 환경에서 실행되지만, 호스트 커널을 공유하여 가상머신보다 효율적이다. 여기서 그 이유를 좀 더 자세하기 말하자면

    테이너가 호스트 커널을 공유하기 때문에 가상머신보다 더 효율적인 이유

    1. 오버헤드 감소

      • 가상머신은 게스트 운영체제 전체를 가상화하기 때문에 부팅 시간이 길고, 메모리, CPU, 스토리지 등의 자원 소비가 크다.

      • 컨테이너는 호스트 커널을 공유하므로 별도의 운영체제 없이 애플리케이션만 격리되어 실행된다. 따라서 가상머신에 비해 오버헤드가 적다.

    2. 높은 density

      • 동일한 하드웨어에서 가상머신보다 더 많은 컨테이너를 실행할 수 있다.

      • 가상머신은 개별 운영체제를 실행하므로 자원 소비가 크지만, 컨테이너는 단일 호스트 커널을 공유하므로 더 많은 수의 애플리케이션을 동시에 실행할 수 있다.

    3. 빠른 시작 시간

      • 컨테이너는 완전한 운영체제를 부팅할 필요가 없으므로 가상머신보다 시작 시간이 매우 빠르다.

    4. 효율적인 시스템 자원 활용

      • 가상머신은 할당된 자원을 모두 사용하지만, 컨테이너는 필요한 만큼의 자원만 할당받아 사용한다.

      • 컨테이너는 필요한 만큼만 리소스를 사용하므로 전반적으로 효율적인 자원 활용이 가능하다.

도커 파일을 빌드하면 도커 이미지가 만들어지고, 이 이미지를 실행하면 격리된 컨테이너 환경이 생긴다. 컨테이너는 이미지를 기반으로 생성되며, 이미지는 변경할 수 없고 컨테이너는 변경 가능한 상태이다.

Last updated