Docker? Container?

namkun·2022년 4월 23일
0

Docker & Kubernetes

목록 보기
1/16

Docker?

해당 내용은 udemy의 Docker & Kubernetes 실전 가이드를 정리한 내용입니다.

도커란 무엇일까?

도커는 컨테이너 기술이다.

즉, 컨테이너를 생성하고 관리하기 위한 도구라고 할 수 있다.

그럼 여기서 컨테이너는 뭘까?

컨테이너?

소프트웨어 개발에서 컨테이너는 표준화된 소프트웨어 유닛이다.

기본적으로 코드 패키지이며, 해당 코드를 실행하는데 필요한 종속성(dependency)과 도구가 포함되어있다.

예를 들어, 도커로 빌드된 컨테이너가 있는 자바 애플리케이션이 있다고 치면 해당 컨테이너에는 자바 애플리케이션 코드만 있는게 아니라,

해당 애플리케이션을 실행시키기 위한 JRE, 그리고 코드를 실행하는데 필요한 도구들이 들어가있다고 할 수 있다.

조금 더 쉽게 생각해보자.

만일 우리가 피크닉을 가기위해서 바구니를 구성해놓았다고 생각해보자.

그 안에는 음식도 있고, 접시도 있는 등 피크닉에 필요한 모든 구성품이 들어가 있을 것이다.

우리는 그 바구니만 있다면 어디든 피크닉을 갈 수 있고, 친구에게 만약 바구니를 빌려준다면 친구 역시 어디든 동일한 피크닉을 할 수 있을 것이다.

다시 도커는?

위에서 말한 컨테이너를 도커가 실행되는 모든 곳에 가져올 수 있다. 그러면 우리는 동일한 환경에서 정확하게 동일한 애플리케이션을 실행할 수 있다.

실행하려는 위치가 설령 새로운 위치라고 해도 도구를 추가로 설치하거나 할 필요가 없다. 왜냐하면 컨테이너에 있는건 동일하기 때문이다.

결국 도커는 이러한 컨테이너 생성 및 관리 프로세스를 단순화하는 도구이다.

근데 왜 하필 Docker와 컨테이너?

앞에서 도커와 컨테이너가 대략 뭐하는건지 알아보았다.

근데 왜 하필 이 두 개일까?

간단한 예를 들어보자.

NodeJS 애플리케이션을 생성했고, 나는 로컬에서 개발하는 동안 NodeJS의 14.3 버전을 사용했다.

그리고 나는 거기서 NodeJS 14.3이상에서만 사용할 수 있는 특정 기능을 사용했다.

여기서 발생할 수 있는 문제는 내가 사용한 코드가 배포해야할 환경에서는 돌아가지 않을 수 있다는 것이다.

이럴때 도커와 컨테이너는 큰 도움이 될 것이다. 특정 노드 버전을 도커 컨테이너에 고정시킬 수 있고, 이를 통해서 우리는 항상 정확한 버전으로 실행되도록 할 수 있다.

추가적인 예시로는 한 환경에서 여러가지의 프로젝트가 올라가있을 때, 각 프로젝트마다 사용하는 도구들이 달라 충돌이 발생할 때이다.

어떤 프로젝트는 NodeJS 8버전을 사용하지만, 어떤 프로젝트는 NodeJS 14버전을 사용하는 경우에 우리는 매번 어떤 프로젝트를 실행하느냐에 따라서 버전을 변경해야할지도 모른다.

그렇지만 도커와 컨테이너를 사용하여 각 컨테이너별로 노드 버전을 다르게 두고 각각 프로젝트를 버전에 맞는 컨테이너에 포함시켜준다면 굳이 버전을 변경하지 않고서 작동시킬 수 있을 것이다.

즉, 우리는 도커와 컨테이너를 통해서 독립적이고, 표준화된 애플리케이션 패키지를 쉽게 구성하고 위와 같은 문제를 쉽게 해결할 수 있다!

profile
개발하는 중국학과 사람

0개의 댓글