ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 도커가 무엇인고?! 간단하게 알아보고 가자, [ 개념 정리 ]
    개발일지/docker 2020. 5. 2. 20:23

    언제부터인지 기억나지 않지만 서비스를 운영하면서 도커를 사용해서 운영하자는 말이 있었고 , 문서 등 설명이 잘 되어 있어서 손쉽게 개발/운영 환경을 구축할 수 있었다, 그렇다면 도커 이녀석이 어떤 녀석인지 한번 정리하면 좋을 것 같다는 생각에 이렇게 기록해본다.


     

    도커가 무엇일까?

    인터넷에 검색해보면 많은 정보가 있지만 한 문장으로 정리해보자면 "컨테이너 기반의 가상화 플렛폼"이다.

    컨테이너 기반이 무엇일까?

     

    위에 사진처럼 수출하는 사진을 통해 예를 들어보자 배 위에 실린 많은 컨테이너 저 속에는 텅텅 비어 있을까? 그렇지 않을 것이다. 각각의 컨테이너는 알맞은 규격으로 그룹화되어 컨테이너 안에 들어 있을 것이고, 각 컨테이너는 같이 관리되어야 할 부분들은 묶여 있을 테고 아닌 것은 따로 독립되어있을 것이다. 

     

    그렇다면 왜 컨테이너에 물건들을 실어서 운반을 할까?

    그냥 이삿짐 쌓듯 그냥 담으면 안 되는 것일까?

     

    가능은 하지만, 많은 물량을 실을 수 없을 것이고 한번 이동하는데 많은 리소스(자원)를 낭비하게 될 것이 아닌가? 그리고 이동하는데 적절한 균형을 유지해야 안전하게 목적지에 도달할 수 있을 것이다. 주먹구구식으로 물량을 싣게 된다면 중간이 한쪽으로 치우칠 수도 있어서, 결국 안전하게 목적지에 도달하기 어려울 것이다.

     

    도커는 배가 안전하게, 리소스 자원 낭비 없이 목적지에 도달하게 해주는 가상화 기술이다.


     

    가상화 기술은 이전에도 있지 않았나?

    맞다 VM (virtual machine) 이 있었다. 하나의 컴퓨터에 여러 vm을 설치하여 개별적으로 os 깔고 그위에 적절한 app을 깔아 사용해 본 적이 있을 것이다. 그렇다면 vm과 도커와 같은 가상화 기술인데 무엇이 다른 것일까?

     

    Virtual Machines

    각 가상화된 응용 프로그램에는(App A or App B) 10MB 정도 필요한 응용 프로그램이 돌아가는데 10MB 바이트뿐 아니라 전체 게스트 운영 체제의 10GB의 자원이 필요하다는 말이다.

     

    Docker

    도커 컨테이너는 오직 애플리케이션만을 포함하고 있다.(애플리케이션에 필요한 의존성을 포함하고) Host OS에 사용자 공간이 격리되어 프로세스가 실행되며, 다른 컨테이너와 커널을 공유합니다. 따라서, 도커 컨테이너는 VM의 이점들과 격리된 리소스를 갖고 있다. 하지만 훨씬 효율적이며 포터블하다.

     


    이미지 (Image)

    비어있는 컨테이너에 담기는 것이 이미지이다.

    이미지를 간단하게 설명하자면 github에 라이브러리 개념하고 비슷하다. 우리는 필요한 기능이 담긴 소스를 받아서 서비스에 붙여 활용하듯 도커에 필요한 것의 image를 찾아 컨테이너에 담아 서비스를 돌리는 것과 비슷하다.

     

    예를 들자면 , 예전에 서버실에서 몇 백대의 컴퓨터에 동일한 환경을 구축하기 위해 시스템 엔지니어가 하루 종일 os 깔고 , 동일한 설정을 위해 메모장에 적혀있는 명령어들을 순차적으로 실행하며 고생하는 모습이 기억이 난다. 하지만 도커를 활용하면 같은 이미지 하나를 컨테이너에 담아 돌리기만 하면 동일한 환경이 구축이 된다. 그리고 그 이미지 리소스들은 github와 같이 docker hub라는 곳에서 관리된다. 이곳 역시 누구나 손쉽게  새로운 이미지를 만들고 배포할 수 있습니다.

     


    이 처럼 도커를 알면 개발환경을 빠르게 세팅하여 개발을 진행할 수 있고, 혹은 라이브 서버 역시 유연하게, 확장성 있게 설계하여 서비스를 운영할 수 있을 것이다.

     

    다음으로 도커를 사용하면서 유용한 명령어들을 정리해 보겠다.

    댓글

Designed by Tistory.