도커(Docker)란!?

생각하는 마리오네트·2024년 4월 20일

docker

목록 보기
2/2
post-thumbnail

서론

개발자가 되기위해서 취업준비를 하기위해서는 스스로 이것저것 만들어보는 일종의 프로젝트를 진행함으로서, 자신의 실력을 증명하려고한다.

각자의 노트북에서 코드를 만들어 프로젝트를 만들면, 개인의 작은 프로젝트에서 컴퓨터 파워는 높은 수준의 스펙을 요구하지 않는다.

하지만, 서비스를 하는 회사에서는 어떻게될까?? 따로 서버실을 둘 정도로 매우 고성능의 스펙장비들을 구성해야되며, 문제가 생겨 서버가 다운이 되는일이 생기면 안된다.

이때, 하나의 컴퓨터에 너무많은 서버를 띄우게 된다면 어떻게 될까?

서버마다 요구하는 버전도 다를것이며, OS를 포함한 개발환경 자체가 다를 수 있는데, 하나의 컴퓨터에 사용하게 되면 충분히 문제가 생길 수 있다. 그렇기 때문에 가상환경을 사용하여 개발환경을 분할하여 작업을 하게된다.

본론

이때 컨테이너라는 개념이 나오는데 일반적인 가상환경 보다는 컨테이너를 사용하게 되면, 더 가볍고 빠르게, 손쉽게 환경을 분리하고 세팅할 수 있게 된다.

그렇다면 도커는 무엇일까??

바로 이 컨테이너를 관리하게 하는 도구입니다. 도커를 통해서 이 컨테이너들을 관리하여 우리가 사용하기 쉽게 코드 몇줄로 실행시킬수 있습니다.

이번에는 팀프로젝트를 예시로 들어보겠습니다.

회사가 아니더라도 사이드 프로젝트로 친한 동료분들과 프로젝트를 하는데 서로 개발환경이 다르고, 라이브러리 간의 의존성(Dependency)문제가 생길 수 있습니다. 내 컴퓨터에서는 잘 작동하던게 동료의 컴퓨터에서는 돌아가지 않는 현상을 겪게 되는거죠...

도커에는 Dockerfile이라는게 있습니다. 이전 글 에서 언급을 하였지만, 도커파일을 통해서 컨테이너 이미지를 빌드하게되면 동료의 컴퓨터에서도 나와 같은 환경으로 실행 할 수 있게됩니다.

심화

혹시 쿠버네티스 라는 단어를 들어보신적 있으신가요?

쿠버네티스는 지금까지 이야기한 이 docker들을 관리하는 오케스트레이션 도구 입니다.

docker들이라고 했는데 그렇다면 도커가 많다? 무슨뜻일까요??

A라는 소개팅 어플로 예시를 들어보겠습니다.

A에서는 서로의 위치정보를 전달해주는 기능F1과 자신의 취향에 맞는 이성을 AI로 탐색하여 매칭해주는 기능F2, 그리고 마음에 드는 이성에게 선물을 보내는 기능 F3가 있습니다.

F1과 F2, F3는 서로 다른 서버 즉 서로 다른 도커에서 각자의 환경에 최적화된 컨테이너로 관리되고있습니다.

이때 우리는 세개나 되는 도커를 관리해야 하는 상황이 생겨 버립니다. 이걸 대신 매니저처럼 관리해주는 것은 쿠버네티스 라고 합니다. 이렇게 서비스가 크고 분리되어있을때 쿠버네티스 라는 매니저를 고용하여 관리를 맞길 수 있게됩니다.

profile
문제를해결하는도구로서의"데이터"

0개의 댓글