본문 바로가기
Study

Docker란 무엇인가? Docker를 사용하는 이유/동작방식

by Developer RyanKim 2019. 1. 29.

관련 이미지



Docker

먼저, Docker란 무엇인가? 

AWS에서는 Docker를 애플리케이션을 신속하게 구축, 테스트 및 배포를 할수있는 소프트웨어 플랫폼으로 정의하였습니다.


스타트업 개발자로 일하면서 우리 서비스에 필요한 어플리케이션을 동작시킬 때 Docker를 굉장히 많이 사용하였습니다.

우리 서비스는 AWS를 사용하였는데 MSA 구조여서 그런지는 모르겠지만 EC2 인스턴스(조그만 컴퓨터 한대를 빌렸다고 생각하면 쉬울까요?)를 다수 사용하였고, 인스턴스마다 모두 Docker를 설치하여 성격에 맞는 것끼리 모아서 실행시켰던 기억이 납니다.

(Ex : ui 관련된 어플리케이션 끼리, 개발용 끼리, 내부적으로 필요한 어플리케이션 끼리 등)


쓰면서도 왜 사용하는지 어떻게 동작하는지는 잘 모르고 명령어만 외웠던 기억이 있네요.

이번 기회에 한번 정리해봅시다!



VM vs Docker 

다들 흔히 Docker는 '가볍다'라고 표현합니다. 이 가볍다는 말을 자세히 들여다 볼까요.

기존에 서로 다른 OS환경에서 어플리케이션을 실행하는데 어려움 때문에, VM을 사용하여 일정영역의 하드웨어를 가상화하고
그 부분에 해당 어플리케이션 환경에 맞는 OS등을 설치하고 어플리케이션을 동작시키는 방식으로 해결하였습니다.



(조대협 님의 블로그 이미지 인용 https://bcho.tistory.com/805)


도커도 마찬가지로 이러한 문제를 해결하기 위해 사용할 수 있습니다.



(조대협 님의 블로그 이미지 인용 https://bcho.tistory.com/805)


+ 추가 ( AWS의 Docker란 무엇입니까? https://aws.amazon.com/ko/docker/)



VM과 비교해서 먼저 도커는 Linux 기반의 OS에서만 동작이 가능합니다.

또한 하드웨어를 가상화하는 것이 아니라, 컨테이너를 구축하여 단독적으로 동작하게 합니다(표현이 어렵네요).

명령수행에 Host의 OS를 사용하고 Host OS와 Container OS의 차이나는 부분만 컨테이너 내에 패키징 합니다.


저는 이부분에서 도커가 VM에 비해 '가볍다' 라고 하는 것으로 이해했습니다. VM은 해당 영역에 또다른 OS를 설치하고 

그 OS를 통해 명령을 수행해야 하기 때문에 한 컴퓨터에서 여러개의 OS가 동작해야 하는것으로 보아야겠지요.

하지만 Docker는 기존의 OS를 사용하기 때문에 VM에 비해 가볍지 않나 생각합니다.


Docker의 동작 방식

먼저 도커는 소프트웨어를 '컨테이너'라는 표준화된 방식으로 소프트웨어를 패키징합니다.
이 컨테이너 안에는 소프트웨어를 실행하는 데 필요한 모든 것이 패키징됩니다. (Ex : 라이브러리, 시스템도구, 코드, 런타임 ... )
패키징 된 컨테이너를 작동시키는 방식으로 동작하며 컨테이너를 위한 운영체제라고 할 수 있겠습니다.
각 서버마다 설치하여 서버 운영체제를 가상화하고 컨테이너를 만들고 동작을 시작하거나 멈추는 등의 명령을 제공합니다.

Docker를 사용하는 이유?

AWS에서는 도커를 사용해야하는 이유를 아래와 같이 정의하였습니다.

"Docker를 사용하면 코드를 더 빨리 전달하고, 애플리케이션 운영을 표준화하고, 코드를 원활하게 이동하고, 리소스 사용률을 높여 비용을 절감할 수 있습니다. Docker를 사용하면 어디서나 안정적으로 실행할 수 있는 단일 객체를 확보하게 됩니다. Docker의 간단한 구문을 사용해 완벽하게 제어할 수 있습니다. 폭넓게 도입되었다는 것은 Docker를 사용할 수 있는 도구 및 상용 애플리케이션의 에코시스템이 강력하다는 의미입니다."

위의 이유와 보태어 제 개인적인 경험으로는 먼저, 서버의 구축과 시작 및 설정이 매우 간단하고 빨랐습니다.
AWS 인스턴스 하나를 먼저 생성하면 Ubuntu OS 밖에 없는 깡통인데(다른 OS도 선택 가능합니다), 가장먼저 하는 일이 Dokcer를 설치하는 일이었고 그 후 이미지를 다운받고 컨테이너를 실행시키는 몇개의 명령어만 입력하면 금방 작업이 완료 되었던 기억이 나네요.



이상으로 Docker에 대한 정리를 마칩니다.

더 자세한 내용이 궁굼하시면 아래글을 보시는 것도 추천드려요!


https://bcho.tistory.com/805  (조대협님 블로그)

https://aws.amazon.com/ko/docker/ (AWS)

  
감사합니다!

By Ryan Kim


댓글