코딩마을방범대

컨테이너와 Docker란? 본문

🎃 기타/상식 ❗

컨테이너와 Docker란?

신짱구 5세 2023. 8. 29. 16:30

 

 

컨테이너(Container)란?


애플리케이션을 환경에 구애받지 않고 실행하는 기술이다.

운영체제에서 실행되는 프로세스를 격리하여 별도의 실행 환경을 제공해주며, 해당 프로세스는 운영체제 상에서 실행되는 유일한 프로세스인 것처럼 작동하는 기술이다.

즉, 운영체제에서 실행되는 여러 프로세스는 컨테이너라는 개념으로 격리되어 별도의 운영 환경을 제공해주는 기술이다.

 

 

컨테이너라고 부르는 이유?
어떤 물체를 격리하는 공간의 뜻을 가지고 있는 컨테이너는 가로, 세로, 높이의 크기가 세계적으로 표준화되어 있다.
이 때문에, 컨테이너 표준을 지키면 물류에 대한 계약, 보관, 운송, 보험 등에 대해서 동일한 기준으로 비지니스 할 수 있다.

리눅스 기술을 사용하여 선박의 컨테이너처럼 프로세스가 사용하는 자원을 격리하며 가상머신과 마찬가지로 애플리케이션 관련 라이브러리 및 종속 항목과 함께 패키지로 묶어 소프트웨어 서비스 구동을 위한 격리 환경을 마련한다.

 

 

 

 


 

 

 

컨테이너의 장점

 

1. 가벼움

사용자의 Request Traffic 이 증가함에 따라, 가상머신이나 컨테이너를 추가적으로 배포할 때 

가상머신의 크기는 최소 GB 단위 이지만, 컨테이너의 경우 Guest OS가 없기에 MB 단위의 크기를 가진다.

트래픽 (traffic)
서버에 전송되는 모든 통신, 데이터의 양

 

 


 

2. 탄력성

컨테이너는 Linux, Windows, 가상머신, Data Center, Public Cloud 등 어느 환경에서나 구동이 되므로

개발 및 배포가 크게 쉬워진다.

 

 

 


 

 

3. 유지 관리 효율

운영 체제 커널이 하나밖에 없기 때문에 운영 체제 수준에서 업데이트 또는 패치 작업을 한 번만 수행하면 변경 사항이 모든 컨테이너에 적용된다.

이를 통해 서버를 더 효율적으로 운영하고 유지 관리할 수 있다.

 

 

 

 

 

 

 


 

 

 

 

 

Docker Container

Go언어로 작성된 리눅스 컨테이너를 빌드, 배포, 실행, 업데이트, 관리할 수 있는 오픈소스 가상화 플랫폼이다.

Docker가 널리 보급되었기 때문에 Docker와 컨테이너가 같은 의미로 쓰이곤 한다.

 

 

 

 


 

 

Docker와 가상머신의 차이점

 

가상머신OS별로 구축 후 별도 공간을 구상해줘야한다.

컨테이너OS 가상화라는 개념이 존재하기 때문에 별도 세팅이 필요없어, 실행속도가 빠르고 메모리를 최소한으로만 사용한다.

OS 가상화
사용하려는 OS를 호스트 OS와 독립하는 방식이 아닌, 커널만 공유하여 '프로세스'로 실행하는 개념.
그래서 별도의 공간이나 메모리 등을 설정해야하는 가상머신보다 호스트에게 부담도 적고, 실행 속도도 빠르다는 장점
이 있다.

커널을 공유하므로 멀티 OS가 불가능하다.(Linux 위에 Window를 올릴 수 없다)

 

왼) VM 가상화 플랫폼 : 오) Docker 가상화 플랫폼

 

VM같은 경우엔 Host OS 위에 가상화를 시키기 위한 Hypervisor 엔진 그리고 그 위에 Guest OS를 올려 사용한다.

이는 가상화된 하드웨어 위에 OS가 올라가는 형태로 거의 완벽하게 Host와 분리되는 장점이 있지만 OS위에 OS를 올리기 때문에 무겁고 느릴수 밖에 없다.

 

반면 컨테이너 기반 가상화는 Docker 엔진 위에 Application 실행에 필요한 바이너리만 올라가게 된다.

HostOS->Docker 엔진 위에서 바로 동작하며 Host 커널을 공유하기 때문에 io처리가 쉽게 되어 성능의 효율을 높일 수 있다.

 

 

 

 

 


 

 

Docker의 특징

  1. 자원 낭비의 부담이 적다
  2. 실행 속도가 빠르다
  3. 배포 및 관리를 단순하게 해준다
  4. 컨테이너 이미지를 쉽게 공유 및 사용이 가능하다.
Docker Image
컨테이너를 실행할 수 있는 실행 파일, 설정 값들을 가지고 있는 것,
Docker Hub를 통해 배포한다.
위 그림을 보면, ubuntu 이미지를 만들기 위해 Layer A,B,C 가 들어간다.
nginx 이미지를 만들기 위해 ubuntu를 베이스 이미지로 사용하여 거기에 nginx가 추가된다.
web app 이미지를 만들기 위해 ubuntu 이미지에 nginx 이미지를 올리고 거기에 web app을 올린다.
이후 컨테이너로 실행시킨다.

 

 

 

 


 

 

Docker 툴 및 용어

DockerFile Docker 이미지 생성 프로세스를 자동화함
Docker 이미지 애플리케이션이 실행되는 데 필요한 모든 툴, 라이브러리 및 종속 항목이 포함되어 있음
Docker 컨테이너 Docker 이미지의 현재 실행 중인 라이브 인스턴스
Docker 허브 공용 Docker 이미지 저장소
Docker 데스크탑 Docker Engine, Docker CLI 클라이언트, Docker Compose, Kubernetes 등을 포함하는 Mac 또는 Windows 애플리케이션
Docker 디먼 클라이언트의 명령어를 사용하여 Docker 이미지를 생성하고 관리하는 서비스
Docker 레지스트리 Docker 이미지 저장/배포 시스템

 

 

 

 


참고사이트

[쿠버네티스] 컨테이너가 뭐에요? (컨테이너의 기본 개념, 컨테이너 란?)

[Docker] Docker의 개념 및 핵심 설명

컨테이너(Container)란?

Docker란?

 

 

SMALL

'🎃 기타 > 상식 ❗' 카테고리의 다른 글

RDBMS와 NoSQL의 차이점  (0) 2023.08.29
LDAP이란  (0) 2023.08.29
Base64 인코딩이란?  (0) 2023.08.02
Intellij IDEA 유용한 단축키 모음  (0) 2023.07.24
CertBot으로 SSL 인증서 발급받기  (0) 2023.06.23