Search
Duplicate
🐳

도커(Docker)는 뭐고 왜 쓸까? (그림책)

간단소개
도커와 사용이유를 정리하면 간닥하게 글을 써봐요
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
Docker
Scrap
태그
9 more properties
도커에 대해 자세히 작성한 좋은 글이 있었지만 나름대로 간략히 정리해본 내용입니다.
요기는 원본 글
도커는 다양한 운영체제에서 리눅스의 컨테이너 환경을 제공하기 위한 엔진 입니다.

컨테이너(container)는 뭘까?

컨테이너는 애플리케이션을 실행할 수 있는 환경입니다.
운영체제와는 다른 개념으로 리눅스 운영체제에서 애플리케이션을 실행할 수 있는 독립된 환경을 제공하는데 이때, 독립된 환경이 컨테이너 입니다.
조금 더 자세한 내용은 차후 글 작성으로 대체하겠습니다.

도커를 사용하는 이유 1. 애플리케이션을 구동하기 위한 환경을 제공

동일하게 작성된 애플리케이션이라도 실행하는 환경이 달라지면 정상적으로 작동하지 않을 수 있습니다.
만약, Java 11에서만 지원하는 기능을 사용해서 애플리케이션을 작성했는데 다른 컴퓨터에 Java 11을 위한 JVM이 없다면 동작하지 않게됩니다. (똑같이 쳤는데 왜 안되지?...)
도커는 작성된 애플케이션 뿐 아니라 당시 개발 환경까지 그대로 담아서 사용 서버에서 실행해주기 때문에 현재 환경에 상관없이 작성된 그대로 애플리케이션을 실행할 수 있습니다.
개발 환경에서 Java 11로 개발한 애플리케이션을 이미지라는 형태로 저장하고 도커 서버에 업로드 -> 실행 환경에서 해당 이미지를 다운로드 -> 도커 컨테이너에서 바로 실행

도커를 사용하는 이유 2. 확장과 축소에 유리

컨테이너는 하나의 운영체제(OS)를 공유하며 독립된 환경을 제공합니다.
만약 서버 방문자가 늘어 애플리케이션을 증설해야한다면 컨테이너를 이용해 동일한 애플리케이션을 늘릴 수 있습니다.
위 예시는 1G 크기의 애플리케이션 4개와 10G의 OS로 구성되어 14G 크기의 환경이 구동되는 모습입니다.
만약 컨테이너가 아닌 가상머신(VM)을 이용한다면 상대적으로 무거운 OS가 증설할 애플리케이션 개수만큼 필요해 총 44G의 크기의 애플리케이션이 실행되게 됩니다.
이렇게 컨테이너를 활용하면 더 가볍고 빠르게 애플리케이션을 증가, 감소 시킬 수 있게됩니다.
또한, 동일한 애플리케이션이 아닌 각기 다른 서비스를 세분화해서 서로 독립된 환경에서 동작하는 MSA(Micro Service Architecture)를 실현할 수 있습니다.
이상 도커를 사용하는 큰 이유 2가지 였습니다.
잘못되거나 수정이 필요한 부분이 있다면 알려주시면 감사합니다!