[Summary] Docker란?

Hoon·2023년 1월 15일
0

Summary

목록 보기
3/5
post-thumbnail

개요

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

도커 컨테이너는 소프트웨어의 실행에 필요한 모든 것을 포함하는 완전한 파일 시스템 안에 감싼다. 여기에는 코드, 런타임, 시스템 도구, 시스템 라이브러리 등 서버에 설치되는 무엇이든 아우른다. 이를 통해 언제나 동일하게 실행될 것을 보증한다

등장배경

리소스를 격리하기 위해 가상화라는 개념이 등장했다. 가상화는 호스트 OS 위에 여러개의 독립된 게스트 OS를 띄워서 사용한다.
이런 가상화의 문제점은 이미지가 거대해지고(Guest OS에 커널을 포함) 성능 손실이 발생(Host OS를 거쳐야 하기 때문)한다는 것이다.
이 문제를 해결하기 위해 컨테이너가 나왔다. 도커 엔진 위에 컨테이너가 할당된다. 컨테이너는 애플리케이션을 구동하는 데 필요한 라이브러리 및 실행파일만 존재하기 때문에 이미지가 가볍다.
결과적으로, 도커를 사용하면 더 가볍고 빠르게 격리된 환경에서 애플리케이션을 구동할 수 있다.

아키텍처 & 구성 요소

도커는 클라이언트-서버 아키텍처를 사용한다. 도커 client는 도커 컨테이너를 빌드, 실행 및 배포하는 작업을 수행하는 Docker 데몬과 통신한다.
도커 client와 demon은 UNIX 소켓 또는 네트워크 인터페이스를 통해 REST API를 사용하여 통신한다. 또 다른 도커 클라이언트는 컨테이너 세트로 구성된 애플리케이션으로 작업할 수 있는 도커 컴포즈이다.

도커 데몬

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

도커 클라이언트

도커 사용자가 도커와 상호작용하는 기본 바업ㅂ. 도커 명령은 도커 API를 사용.

도커 데스크탑

컨테이너화된 애플리케이션 및 마이크로서비스를 구축하고 공유할 수 있다. 도커 데스크탑에는 Docker 데몬( dockerd), Docker 클라이언트( docker), Docker Compose, Docker Content Trust, Kubernetes 및 Credential Helper가 포함된다.

도커 레지스트리

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

도커 오브젝트

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

이미지

도커 컨테이너를 만들기 위해 필요한 read-only 템플릿. 자신의 이미지를 만들 수도 있고, 다른 사람이 만들고 레지스트리에 게시한 이미지를 사용할 수도 있다. 이미지를 빌드하려면 이미지를 만들고 실행하는 데 필요한 단계를 정의하는 Dockerfile을 만든다. 도커 파일의 각 명령어는 이미지에 layer를 만든다. 도커 파일을 수정하고 이미지를 rebuild하면, 변경된 layer만 다시 빌드 된다. 이러한 특징으로 이미지를 가볍고 빠르게 만들 수 있다.

컨테이너

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

컨테이너라는 격리된 작업 공간을 제공하기 네임스페이스라는 기술을 사용한다.

Reference

0개의 댓글