Docker란?

GilLog·2022년 1월 24일
0

Docker

목록 보기
1/1

#import

Docker [Docker.com]

Docker란?[IBM]

Docker(도커)란?[Red Hat]


Docker?

DockerContainerApplication빌드, 배치, 관리 기능을 제공하는 오픈 소스 플랫폼이다.


DockerLinuXContainer를 생성 및 사용할 수 있도록 하는 Container화 기술로,

Docker는 개발자가 개발한 Source Code(Application)를 실행하는 표준 방식을 제공한다.

쉽게 말해 DockerContainer 를 위한 운영 체제(O/S)이다.

Docker를 사용하면 Container를 아주 가벼운 Module 형식 VM 처럼 다룰 수 있다.


Docker를 통해 개발자는 Application을, ContainerPackaging할 수 있다.


아래 그림Container가상 머신(Virtual Machine)의 차이점을 보여준다.

VM 환경에서는 Server 위 Hypervisor를 통해 여러개의 O/S를 구동시켜,

다수의 Application을 구동 시키는 형식이지만,


Container의 경우 하나의 O/S에,

Docker Engine내에서 여러개의 Container를 구동시켜,

다수의 Application을 구동 시킬 수 있다.



Container?

Docker에서 사용하는 Container 개념 이전에,

Linux O/S에는 LinuXContainer(LXC)라는 Container 기능이 2008년 부터 제공되고 있었다.

LinuXContainer(LXC)단일 Instance에 대해 가상화 기능을,

Linux 커널 단에서 제공한다.


Container In Docker

Docker에서 Container의 개념은,

Application Source Code임의의 환경에서 실행하기 위해 필요한,

O/S Library 및 종속 항목결합하여 실행 가능한 표준 Component이다.

이러한 Container는 분산형으로 분화되는 Application의 실행 환경 Delivery를 간소화해주며,

Cloud 환경으로 이전되는 개발환경 상황에서 유용하게 사용된다.



Docker VS LXC

DockerLinuXContainer(LXC)에 아래와 같은 기능을 추가하였다.

완벽한 이식성

LXC가 간간히 System의 특정 구성을 참조하는데에 반해,

DockerContainer는 DeskTop, Data Center, Cloud 환경에서 별도의 수정없이도 실행된다.

경량성

LXC를 사용할 경우 다수의 Process하나의 단일 Container 안에서 결합할 수 있다.

DockerContainer를 사용할 경우,

Container안에서는 하나의 Process만 실행할 수 있다.

이를 통해서 Update나 수정사항 반영을 위해 하나의 Process를 중단하는 동안에도,

계속해서 실행 가능한 Application을 Build 할 수 있다.

자동 Build

Docker는 Application Souce Code를 기반으로,

Container를 자동으로 Build할 수 있다.

Container Version 관리

DockerContainer 이미지의 버전에 대해,

Version Rollback이나 Build한 사용자 및 방법 등을 Tracking할 수 있다.

더나아가 이전 버전과 신규 버전 사이의 변경점만 Upload할 수 있다.

재사용성

새로운 Container를 생성할 때,

기존에 사용하던 Container를 Template 형식으로 재사용하여,

기본 이미지로 사용하며 생성할 수 있다.

공유성

자신이 생성한 Container 이미지다른 사람이 생성한 Container 이미지를,

Open Source Registry에 등록 및 참조하여 사용할 수 있다.


Docker 구조

Docker의 구조를 살펴보면 아래 그림과 같다.

Docker가 실행될 때 구성 요소는 크게 5가지로,

Docker Daemon, Docker Client, Doker Host, Docker Object, Docker Registry가 있다.

위 그림을 토대로 구성 요소들을 살펴보면 아래와 같다.

Docker Daemon

Docker Daemondockerd로 지칭되며,

Docker API 요청을 수신하고 Docker Object인,

Image, Container, Network & Volume를 관리한다.


Docker DaemonDocker Service관리를 위해 다른 Docker Daemon과 통신할 수 있다.

Docker Client

Docker Clientdocker로 지칭되며,

Docker를 사용하는 사용자, 개발자가 Docker와 상호 작용하는 기본 방법이다.


Docker Client(docker)docker run와 같은 명령을,

Docker Daemon(dockerd)에게 보냄으로 써 Docker API를 요청한다.

Docker Client는 하나 이상의 Docker Daemon과 통신할 수 있다.

Docker Host

Docker HostDocker Engine을 구동시키는 Server를 생각하면 된다.

하나 이상의 Docker Daemon을 구동하는 Server로,


해당 Server 내부에서 Docker Client(docker)의 명령을 토대로,

자신이 구동중인 Docker Daemon(dockerd)로 명령을 전달한다.

Docker Object

Docker를 사용하면 Image, Container, Network & Volume 등을 만들어 사용하게 되는데,

이들을 Docker Object라 지칭한다.

Image

Docker에서 실질적으로 자주 사용하게되는 Docker Image에 대해 조금 더 살펴보면 아래와 같다.


ImageDocker Container를 생성할 수 있는 Template 형식이다.

자신만의 Docker Container 생성을 위한 Image를 만들거나,

Registry에 등록된 다른 사용자의 Image를 토대로 사용 및 수정하여,

Docker Container를 생성할 수 있게 해준다.


고유한 Image Build를 위해서Image 생성 및 실행을 위한 단계를,

정의하기 위한 간단한 구문을 사용해 Dockerfile을 만든다.

Dockerfile의 각 명령은 Image계층(Layer)을 생성하게 된다.


Dockerfile을 변경해 Image를 다시 Build 하면,

변경된 계층(Layer)만 다시 Build 되어,

다른 가상화 기술과 비교Docker를 사용하는 이유인,

경량성을 충족시키는 부분이다.

Container

Cotainer은 앞서 살펴본 Image를 통해 실제로 메모리 영역에 Onload 된 Instance이다.

Docker APICLI를 사용Container를 생성, 시작, 중지, 삭제 등 관리할 수 있다.


profile
🚀 기록보단 길록을 20.10 ~ 22.02 ⭐ Move To : https://gil-log.github.io/

0개의 댓글