본문 바로가기

DevOps/Docker

도커(Docker) 시작하기 - 이미지, 컨테이너, 장점 :: DANIDANI

도커란?

도커는 리눅스 환경에서 컨테이너 기반의 오픈소스 가상화 플랫폼입니다.

 

우리가 express 애플리케이션을 만들어서 배포를 할 때를 생각해봅시다. 서버를 만들고 node를 설치하고, npm을 설치하고, git을 설치하고,,,,, git에서 pull을 받고, npm install을 해주고, npm start를 해주고,,,, 버전이 안 맞아서 다시 반복,, 등등!

아주 복잡한 과정들을 거칩니다.

 

그러나 express 애플리케이션을 도커 이미지로 저장해 놓는다면 언제 어디서든 pull 받고 run만 하면 실행이 됩니다. express 애플리케이션뿐만 아니라 OS, framework, tool 등 어떠한 종류라도 docker 이미지만 있다면 pull, run 처럼 똑. 같. 은 방식으로 실행이 가능합니다.

도커 vs 가상 머신

도커는 주로 가상 머신(VM)과 비교가 많이 됩니다.

결론적으로 말하자면 가상 머신과 같은 효과를 내지만 도커는 가상 머신이 아닙니다.

 

기존의 가상 머신은 가상화 환경, 즉 OS부터 기타 자원들을 완전하게 가상화해서 만들었지만,

도커는 프로세스만 컨테이너로 격리하고, 기존의 시스템 자원은 공유하는 형태입니다.

 

위의 그림과 같이 VM은 호스트 OS 위에 Guest OS를 다시 설치합니다.

예를 들어 현재 호스트 OS가 mac이고 mac에서 VM을 설치하여 ubuntu를 다시 설치하는 것입니다.

그러나 도커는 다릅니다.

Geust OS를 설치하지 않고, 호스트 OS와 자원을 공유합니다.

 

이렇기에 가상 머신과 도커의 성능 차이가 생기는 것입니다.

Geust OS를 모두 포함한 가상 머신의 용량은 최소 GB로 커지게 되고, 속도도 당연히 느려지게 됩니다.

도커는 MB단위의 크기를 가지며 메모리 접근, 파일 시스템, 네트워크 전송 속도 등이 월등히 빠릅니다.

실제로 호스트 OS에서와 의 성능 차이가 크지 않다고 합니다.

도커 용어 정리

이미지 Image

이미지는 서비스 운영에 필요한 서버 프로그램, 소스코드, 컴파일된 실행 파일 등 프로세스 실행 환경을 의미합니다.

이러한 이미지는 Docker Hub이라는 원격 저장소에 push로 올릴 수도 있고 수정하여 다시 Pull도 할 수 있습니다.(Github과 비슷한 역할을 합니다. github은 소스코드를 저장한다면 docker hub은 이미지를 저장하는 곳?!)

컨테이너 Container

컨테이너는 격리된 공간에서 프로세스가 동작되는 기술입니다.

호스트 입장에서는 컨테이너는 단순히 프로세스에 불과하지만, 사용자나 컨테이너 입장에서는 호스트와 무관하게 동작하는 가상 머신처럼 보입니다.

 

컨테이너는 이미지를 실행한 상태이고, 이미지 하나로 여러 개의 컨테이너를 실행할 수 있습니다.

이미지는 불변하지만 이미지 기반으로 만들어진 컨테이너는 변경이 가능합니다.

 

컨테이너는 실행 중인 환경에 관계없이 도커가 설치되어있다면 동일하게 실행될 것을 보증합니다.

Layer

도커는 레이어 저장 방식이라는 개념을 사용합니다.

ubuntu 이미지가 A + B + C로 구성되었다면, ubuntu 이미지를 베이스로 만든 nginx는 A + B + C + nginx 가 됩니다.

또 nginx 이미지를 베이스로 만든 web app은 A + B + C + nginx + source 가 됩니다.

만약 web app의 소스를 수정하면 A + B + C + nginx + source2처럼 source부분만 변경하면 되기에 효율적으로 이미지 관리가 가능합니다.

 

도커 컨테이너에서도 기존의 이미지 레이어(read only) 위에 read-write 레이어를 추가합니다.

기존 이미지 레이어는 그대로 사용하면서, 실행 중 생성되는 파일은 read-write 레이어에 저장됩니다.

Docker Hub

Docker Hub은 원격 저장소로 docker의 이미지를 쉽게 올리고 다운로드할 수 있습니다.

GitHub에서 쓰는 것처럼 push, pull, commit과 같은 명령어를 사용할 수 있으며 버전 관리가 가능합니다.

Docker Hub에서는 50만 개가 넘는 이미지가 저장되어 있는데, office 이미지뿐만 아니라 사용자들이 직접 올린 이미지들도 있습니다.

 

보통 ubuntu처럼 앞에 앞에 이름이 따로 붙지 않는 경우는 office Image이고,

daeun/ubuntu처럼 이름/ 가 있는 경우가 해당 사용자가 만든 이미지입니다.

Docker Hub

Docker 장점

  • 속도가 빠르고 가볍다.
    • GuestOS가 없어 VM보다 빠른 실행 속도를 냅니다.
    • 하드웨어를 가상화하지 않아서 메모리 접근, 파일 시스템, 네트워크 전송 속도가 빠릅니다.
  • 쉽고 빠르게 동일한 환경 구축이 가능
    • 환경에 구애받지 않고 실행할 수 있습니다.
    • 여러 서버를 사용할 때 완전히 동일한 환경의 서버를 구축하기란 어려운데 이를 쉽게 만들어줍니다.
    • 확장과 테스트가 용이합니다.
  • 관리 편함
    • 컨테이너는 격리된 구조로 되어 있어 각 애플리케이션을 독립적으로 실행할 수 있습니다.

 

참고

초보를 위한 도커 안내서 - 도커란 무엇인가?

도커(Docker) 입문 편: 컨테이너 기초부터 서버 배포까지

728x90