본문 바로가기

개발/docker

docker란?

배경


개발을 하다 보면 docker를 정말 많이 사용합니다. docker container를 통해 각기 다른 서버에서도 동일한 운영을 할 수 있게 해준다거나 독립적인 개발환경 구축이 가능하다거나 등등.. 이제는 개발과 떼어놓을 수 없는 수준이라고 생각합니다. 하지만 이런 단편적인 지식만 알고 쓰기엔,  앞으로 docker를 마주할 일이 시도때도 없이 있을 거란 말이죠.. 그래서 오늘은 docker의 탄생 배경과 어떤 식으로 구성되어 있는지 간단하게 알아보려고 합니다.

 

내용


< docker 등장 배경 >

docker는 컨터이너 기반 가상화 도구입니다. 왜 탄생하게 되었을까요? 2000년대 초까지만해도 가상화 없이 하드웨어에 직접 OS와 Application을 설치하였습니다. 서버 성능이 모자르면 성능이 좋은 장비를 구매하는 Scale up 방식이 일반적이었죠. 하지만 필요한 성능이 100이고, 현재 성능이 90 쯤 나온다고 해서 필요한 만큼 추가할 수 없었고, 그보다 더 높은 200 짜리 장비를 구매해서 부족한 성능을 충당하는 식이었기에 불필요한 지출이 컸으며, 초기 비용도 컸습니다. 또한 장비를 교체할때마다 또 OS와 Application을 새로 설치해야했죠. 성능적인 손해는 적을지라도 비용면에서나 속도, 편의성 면에서는 좋지 못했습니다.

 

이후 2001년쯤, VMWare에서 가상화 솔루션이라는 것을 출시하면서 변화가 생기기 시작합니다. 기존 방식은 한대의 서버를 돌렸을 때 그 서버에서 장애가 발생하면 모든 서비스가 멈추게 됩니다. 이를 해결하기 위해서는 메인 프레임을 추가로 사서 구성을 해야했죠. 하지만 Virtual Machine은 논리적으로 CPU, Memory 등의 자원을 격리할 수 있기 때문에 이중화를 위해 메인 프레임을 구성해야 한다는 문제를 해결하게 됩니다.

 

다수의 서비스를 하나의 메인 프레임에서 돌리더라도 cpu, memory를 공평하게 나눠가지게 하면서 1개의 서비스에 장애가 발생해도 다른 서비스에는 영향을 미치지 않게 됩니다. 비용적 측면에서 이는 혁신이었죠. 추가 서비스를 사용하려면 매번 새로운 하드웨어 서버를 사야 했었는데, 이제는 하나의 하드웨어에서 다수의 서비스가 구동되면서 장애까지 해결이 됩니다.

 

하지만 장점만이 있던 것은 아니고 나의 OS 위에서 여러 서비스를 작동시키는 데 비해 가상화 환경에서는 각 서비스가 격리를 위해 별개의 OS 위에서 돌아가기 때문에, 그 만큼의 성능 손실이 발생하는 구조입니다. 따라서 리소스 손실이 크다는 문제가 있었죠.

 

[ container ]

앞서 말한 VM은 이중화와 서비스 격리의 이점을 가지게 되었지만 자원 낭비가 심하다는 문제가 있었습니다. 이를 해결하기 위해 나타난 것이 container입니다. container는 Host OS위에 격리된 레이어를 구축하여 동일한 OS상에서 다수의 서비스가 운영될 수 있게 합니다.

 

위 그림은 지난 세월동안 발전 과정을 나타냅니다. 2번째 방식을 보게 되면 VM안에 OS를 가지고 있습니다. 하지만 container에서는 OS가 없죠. 모든 container는 하나의 OS를 공유하기 때문에 필요가 없어진겁니다. 이 덕분에 매우 가볍게 여러개의 App을 운영할 수 있게 된거죠.

 

동일한 OS를 활용하지만 격리된 레이어를 통해 독립된 개발환경을 보장할 수 있게 되었고 프로세스를 컨테이너 단위로 사용하게 되면서 관리와 확장이 용이해지게 됩니다. 또한 기존의 sacle up 방식에서 scale out방식을 사용하게 되면서 자원을 늘리는 비용 측면에서도 이득을 보게 됩니다.

 

[ docker engine ]

컨테이너의 관리는 docker engine을 통해 이루어집니다. 사용자가 쉽게 컨테이너를 이용할 수 있게 해주며 컨테이너의 라이프 사이클을 관리하죠. 단순히 컨테이너만 관리하는게 아닌 image, volume, network등을 관리하고 있습니다.

 

 

 

 

오늘은 docker와 container에 대해 간단히 알아보았는데요, 다음시간에는 docker compose와 명령어에 대해 알아보도록 하겠습니다.

 

 

 

참고

https://www.youtube.com/watch?v=IiNI6XAYtrs

 

https://velog.io/@mainfn/Docker-%EB%B0%8F-Container-%ED%99%98%EA%B2%BD%EC%9D%98-%EB%93%B1%EC%9E%A5-%EB%B0%B0%EA%B2%BD

 

Docker 및 Container 환경의 등장 배경

Docker의 탄생 배경 Google은 매 주 수십 억 개의 Container를 실행한다. Google 뿐만 아니라 현대 Application은 대부분 Container 상에서 구동된다. 만약 당신이 웹 개발자가 된다면, 당신이 개발한 Application

velog.io

 

'개발 > docker' 카테고리의 다른 글

도커 스웜  (0) 2024.12.23
docker compose에서 health check를 활용한 spring boot app 띄우기  (3) 2024.12.19