도커란 무엇인가?

2023. 8. 3. 22:59초기 과업/DevSecOps

작성자알 수 없는 사용자

728x90
반응형

 

안녕하세요. 기깔나는 사람들에서 DMSO를 맡고있는 정우입니다.

오늘은 도커란 무엇인지 알아볼게요.

 

 


도커의 개념

도커는 컨테이너 기반의 오픈소스 가상화 플랫폼입니다.

 

 

도커를 왜 사용할까요? 

복잡한 서버 관리를 위해

설치 문제, 인프라 변경, 서버 변경, 언어의 다양성 ⇒ 개발환경이 계속 바뀌니까 관리가 안되면 힘들다ㅜㅜ

 

그렇다면

 

기존서버가 어떤 방식으로 작동을 하는데?

기존 서버 관리 방식

Add User → System Env → Firewall → Network → Dependencies → Python → Git Clone → Package → Configuration → Migration → Proxy → Run

기존에 한땀한땀 하나씩 실행

 

 

그러면 컨테이너란 무엇인가?

이런 식으로 컨테이너에 물건을 넣고 다양한 운송 수단으로 쉽게 옮길 수 있습니다

 

 

서버에서 컨테이너 란? 

이런 식으로 컨테이너 안에 다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해 줍니다. 일반 컨테이너의 개념에서 물건을 손쉽게 운송해주는 것처럼 프로그램을 손쉽게 이동 배포 관리를 할 수 있게 해 줍니다. AWS, Azure, Google cloud 등 어디에서든 실행 가능하게 해 줍니다.

 

컨테이너를 격리 시켜서 사용합니다.

 

 

 

도커 컨테이너를 격리 시킨다는게 무슨뜻일까 ?

먼저 리눅스에서 쓰이는 Cgroup(control groups)과 네임스페이스(namespaces)에 대해서 알아야 합니다.
이것들은 컨테이너와 호스트에서 실행되는 다른 프로세스 사이에 벽을 만드는 리눅스 커널 기능들입니다. 

 

C group이란? 


CPU, 메모리, Network Bandwith,
HD i/o 등 프로세스 그룹의
시스템 리소스 사용량을 관리
예를 들어, 어떤 어플이 사용량이 너무 많다면
그 어플리케이션 같은 것을 C group에 집어넣어서 CPU와 메모리 사용 제한 가능

 

 

네임스페이스란? 

하나의 시스템에서 프로세스를 격리시킬 수 있는 가상화 기술 
별개의 독립된 공간을 사용하는 것처럼 격리된 환경을 제공하는 경량 프로세스 가상화 기술 

 

어떻게 도커가 리눅스의 Cgroup, 네임스페이스를 쓸수 있는가?

도커 버전을 확인해보자

$ docker version

 

OS의 기본이 linux다!!


 

도커의 장점

복잡했던 서버 관리를 한번에 처리가 가능해진다

어떤 프로그램도 컨테이너로 관리가 가능해진다

컨테이너로 저장하면 어디서든 컨테이너를 실행가능해진다

 

 

 

가상머신 아닌가??

가상머신처럼 독립적으로 실행되지만
가상머신보다 빠르고
가상머신보다 쉽고
가상머신보다 효율적이다




도커의 등장

파이썬 같은 툴이나 패키지가 업데이트되면 다른곳에 문제가 생기지 않을까?

실행시 서버가 안뜰수도 있겠네?

한땀한땀 잘 해야되겠네

등등등…

 

도커 등장(2013년 DotCloud→ 현Docker)

어렵고 복잡한 기술을 사용하기 쉽게!

 

HOW??

 

1st try

→ 문서를 한번에 관리해보자

2nd try : 설정파일로 관리를 하려 하기

→ 문서보다는 코드로 작성

→ 코드로 작성하면 협업도 하고 버전관리도 가능

3rd try: 가상머신 사용

→ 가상머신에 각 서버당 각 프로그램 설치하기

→ 한번에 여러개 설치 쉽다

→ 현재 상태 저장 가능!

→ 너무 느리다…

→ 서버 이미지 공유 어떻게 하지?

4th try : 자원관리(고급기술)

→ 프로세스를 가상으로 분리하기

→ 파일이나 디렉토리도 가상으로 분리하기

→ CPU,Memory, I/O를 그룹별로 제한

→ Linux 기능을 이용해 빠르고 효율적

→ 사용하는게 너무 어렵다..

→ Google, Amazon


도커의 미래

 = 컨테이너의 미래

 

클러스터링

- 여러개의 서버를 하나의 서버처럼 사용

- 작게는 몇개 안되는 서버 ~ 수천대의 서버를 하나의 클러스터로

- 여기저기 흩어져 있는 컨테이너도 가상 네트워크를 이용하여 마치 같은 서버에 있는것처럼 통신

 

 

서비스 티스커버리

- 서비스를 찾아주는 기능

- 클러스터 환경에서 컨테이너는 어느서버에서 생성됐는지 알수 없고 다른 서버로 이동가능

- 컨테이너와 통신을 하기위해 어느서버에서 실행중인지 알아야하고 컨테이너가 생성되고 중지될때 어딘가에 IP&Port 정보를 업뎃해줘야함

- Key-Value 스토리지에 정보를 저장할 수도 있고 내부 DNS 서버를 이용

 

 

 

 

 


 


참고자료

🔗 - 인프런-초보를 위한 도커 안내서

🔗 - 인프런-따라하며 배우는 도커와 CI환경

 

 

 

 

 

728x90
반응형