Docker의 개념

구본식·2023년 1월 17일
0
post-thumbnail
post-custom-banner

1.컨테이너란

소프트웨어는 OS와 라이브러리에 의존성이 있다. 그래서 하나의 PC에서 다른 종류의 OS 소프트웨어를 실행하려면 구성하는것에 어려움과 관리하기가 어렵다.

컨테이너(Container)는 개별 소프트웨어 실행에 필요한 실행환경을 독립적으로 운영될수 있도록 기반 마련 또는 다른 실행환경과의 간섭을 막고 독립성을 확보해주는 운영체계 수준의 격리 기술을 의미한다.


2. 컨테이너 vs 가상머신(VM)

  • 가상머신(VM)
    • 가상머신HyperVisor를 이용해 여러개의 운영체제를 하나의 호스트가 생성해서 사용하는 방식을 사용한다.
    • HyperVisor는 해당 컴퓨터 리소스에 대해 가상머진(VM)별로 리소스를 배분하는 역할을 한다.
    • 각 가상머신(VM)들은 독립적인 OS를 가지고 있다. 즉 OS단위의 격리환경
    • Host OS에서 독립적인 VM이 추가 될때마다 OS를 만드는 작업을 해야하므로 성능 손실 문제가 발생한다.
    • 독립적인 OS를 사용하기 위해 라이브러리, 커널등을 포함하기 때문에 이미지 크기, 용량이 커지는 문제가 있다.
    • 메모리, 리소스에 대해서 유동적으로 관리되는것이 아니라 처음부터 정해두기 때문에 비효율적이다
    • 하지만 완벽한 운영체제를 생성할수 있다는 장점도 있다.
  • 컨테이너(Contanier)
    • 프로세스 단위의 격리환경을 만들기 때문에 성능손실이 거의 없다.
    • 컨테이너에 필요한 커널은 공유해서 사용하고 , 컨테이너안에는 어플리케이션을 구동하는데 필요한 라이브러리, 실행파일만이 존재한다.
      -> 이미지 크기, 용량이 대폭 작아진다.

3. Docker란

도커(Docker)컨테이너 기반으로 어플리케이션을 프로세스 격리기술을 사용하여 쉽게 컨테이너로 실행하고 관리할수 있게 해주는 오픈소스 가상화 플랫폼중 하나이다.

Docker를 사용하면 여러개의 어플리케이션을 분리하여 컨테이너로 추상화하여 독립적인 실행환경을 제공할수 있다.

주어진 하나의 호스트 OS에 별도의 OS없이 여러 컨테이너를 동시에 실행시킬수 있다.


4. 도커 구성요소

Docker Client: 도커를 설치하면 그것이 Client이며 build,pull,run 명령어를 수행한다.

Dokcer_HOST: 도커가 실행되있는 서버를 의미한다.

Docker daemon(Docker Engine): 컨테이너를 생성하고 관리하는 주체로서 컨테이너를 제어할수 있고 다양한 기능을 제공한다.

Registry: 외부 저장소를 의미한다. 사람들이 공유한 이미지를 내부 도커 호스트에 pull하여 사용할수 있다. public, private(Docker Hub) 저장소가 존재


5. 도커 이미지와 도커 컨테이너

도커 엔진(Docker Engine)에서 사용하는 기본단위는 도커 이미지도커 컨테이너이다.

Docker file

  • 도커 이미지를 만들때 사용되는 파일

Docker Image

  • 도커 컨테이너를 생성할 때 필요한 요소이다. 이미지는 컨테이너를 생성하고 읽기 전용으로 사용되며 여러 계층의 바이너리 파일로 존재한다.
  • [저장소 이름(Docker Hub)]/[이미지 이름]:[태그]의 형태로 구성된다.

Docker Container

  • 도커 이미지로 생성된다.
  • 호스트와 다른 컨테이너로 부터 격리된 시스템 자원 및 네트워크를 사용할수 있는 독립적인 공간이 생성된다.
profile
백엔드 개발자를 꿈꾸며 기록중💻
post-custom-banner

0개의 댓글