github-blog.png


✍️ Today I Learned


  • 도커를 설치하고 실행해보며 기본 개념을 학습했다.

    해당 과정을 기록으로 남겨보았다.



1. 도커(Docker)란?


000

  • 우선 도커란 가상머신(VM)과 유사하지만 Guest OS가 따로 설치되지 않는 보다 경량화된 방식이다.

  • 가상머신은 편리하지만 PC의 자원을 함께 공유하여 사용하므로 성능이 좋지 못한 단점이 존재한다.

  • CPU도 발전 됨에 따라 가상화를 위한 기능들이 비약적으로 상승하였고 그 외에도 속도 이슈를 극복하기 위한 반 가상화 방식등의 방법 또한 존재하지만 항상 Host OS 위에 Guest OS가 설치되어 운영체제 위에 운영체제를 또 쌓는 개념이기 때문에 리얼머신과 비교하면 당연히 속도가 느리다.

  • 도커는 기존 Host OS 위에 다른 OS를 쌓아서 사용하는 개념이 아닌, 도커 이미지에 서버 운영에 필요한 프로그램과 라이브러리만 따로 격리하여 설치 한 뒤 OS 자원은 Host OS와 공유하는 방식으로 운영된다.

  • 따라서 이미지 용량이 크게 줄어 들고 가상화를 구현하기 위해 필요한 프로세스가 없어지므로 Host OS와 유사한 속도를 보장해준다.

  • 또한 Git 과 같이 버전관리 기능을 제공하며, 이미지를 저장하기 위한 저장소 공간을 제공하는 Docker Hub (GitHub 처럼 개인 저장소도 제공한다) 또한 존재하기 때문에 개발과 서버 운영적인 측면에서 매우 유용하다.



2. 도커 이미지와 컨테이너


1_3ds-PdxGGMN-ZzJH95_lsA

  • 위에서 잠깐 “이미지”란 단어를 언급했다.

  • 우선 이미지란 필요한 프로그램과 라이브러리들 그 외 여러 소스 파일을 설치한 뒤 묶어서 하나의 파일로 만든 것이다. 도커에서는 해당 이미지를 저장소에 올려 보관하거나 내려 받을 수 있다.

  • 그리고 컨테이너는 리눅스 운영체제에서 제공하는 가상 공간 개념이다.

    OS를 통째로 가상화 하는 것이 아니라 격리된 공간이기 때문에 가상 머신이라 불리지는 않으며 컨테이너라 일컫는다.

  • 도커에서는 컨테이너를 특정한 가상 공간이라 부르기보다는 이미지를 실행한 상태를 말한다.

  • 운영체제의 개념으로 도커를 바라보면(도커는 OS가 없으므로 정확한 표현은 아니다) 이미지는 실행 파일이며, 컨테이너는 프로세스이다.

  • 도커는 가상머신 처럼 운영체제를 설치하는 것이 아니므로, 각각 운영체제에 존재하는 패키지 관리자등 의 기능 수행을 이미지가 대신 수행(패키지 관리자등 각 운영체제별 필요한 기능들의 이미지 파일이 존재한다)하고 있다.



3. Why Docker?


  • 위 질문의 해답은 이미 모두 나왔다.

  • 도커를 통해 실행된 컨테이너는 독립적인 실행 환경을 보장 받을 수 있으며, 그 독립된 공간은 가상머신보다는 유연하고 빠른 속도를 보장한다.

    때문에 서버를 운용하며 특정 라이브러리 버전이 새로 업데이트 되어도 독립적인 공간인 컨테이너 안에서는 영향을 받지 않는다. 그러므로 도커를 이용해 컨테이너로 실행된 서버는 위와 같은 장점들로 인해 서버 유지적인 측면에서도 더욱 용이하다.



🤔 Understanding

  • 우선 개념적인 부분만 학습해보았으며 앞으로 추후 계속 사용해보며 도커 컨테이너 환경에 적응해보려 한다.

  • Ubuntu 도커 설치과정은 공식문서에 자세히 안내되어 있기때문에 해당 링크를 참조로 남긴다.