Docker 란?

tw·2024년 2월 3일

개요

도커(Docker)는 리눅스의 응용 프로그램들을 프로세스 격리 기술을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 가상화 플랫폼이다.

도커 컨테이너는 소프트웨어의 실행에 필요한 모든 것을 포함하는 완전한 파일 시스템 안에 감싼다.

여기에는 코드, 런타임, 시스템 도구, 시스템 라이브러리 등 서버에 설치되는 무엇이든 아우른다.

이를 통해 언제나 동일하게 실행되는 것을 보증한다.

등장 배경

리소스를 격리하기 위해서 가상화라는 개념이 등장하였고, 가상화는 Host, OS위에 여러개의 독립된 게스트, OS를 띄워서 사용한다.

이런 가상화의 문제점은 이미지가 거대해지고(Guest OS에 커널을 포함) 성능 손실이 발생한다.

이 문제를 해결하기 위해서는 도커 엔진위에 컨테이너가 할당된다. 컨테이너는 애플리케이션을 구동하는 데 필요한 라이브러리 및 실행파일만 존재하기 때문에 이미지가 가볍다.

결과적으로, 도커를 사용하게 된다면, 더 가볍고 빠르게 격리된 환경에서 애플리케이션을 실행시킬 수 있다.

아키텍처 & 구성요소

도커는 서버 - 클라이언트 - 서버 아키텍처로 통신한다. 도커 Client는 도커 컨테이너를 빌드, 실행 및 배포하는 작업을 수행하는 Docker 데몬과 통신한다.

도커 Client와 demon은 UNIX 소켓 또는 네트워크 인터페이스를 통해 REST API를 사용하여 통신한다.

다른 도커 클라이언트는 컨테이너 세트로 구성된 애플리케이션으로 작업할 수 있는 Docker Compose이다.

도커 클라이언트

  • 도커 사용자가 도커와 상호작용하는 기본세팅이다. 도커 명령은 도커 API를 사용한다.

도커 데몬

  • 도커 데몬은 도커 API를 요청하여 수신하고 이미지, 컨테이너, 네트워크 및 볼륨과 같은 Docker 객체를 관리한다.
  • 데몬은 다른 데몬과 통신하여 Docker 서비스를 관리할 수 있다.

도커 레지스트리

  • 도커 이미지를 저장한다. 공개된 레지스트리인 Docker Hub가 있고, 사설 레지스트리에 지정할 수 있다.

도커 오브젝트

  • 도커를 사용하면 이미지, 컨테이너, 네트워크, 볼륨, 플러그인 및 기타 오브젝트를 만들고 사용한다.

컨테이너

  • 컨테이너는 이미지의 실행 가능한 인스턴스이다.
  • 도커 API 또는, CLI를 사용하여, 컨테이너를 create, start, stop, move, delete한다.
  • 컨테이너를 네트워크와 스토리지에 연결하여, 현재상태를 기반으로 새로운 이미지를 만든다.

Reference

profile
안녕하세요

0개의 댓글