Did you know that you can navigate the posts by swiping left and right?
본 글은 컴퓨터과학부 친구들을 위한 튜토리얼(Tutorial) 페이지의 일환으로 제작되었습니다. 본 글은 아무것도 모르는 대학생을 기준으로 작성합니다.
어쩌면 필자가 고민한 바와 비슷한 느낌으로 도커에 대해서 알아보고, 이곳(포스트)에 도착했으리라 생각한다. 왜 도커를 사용해야할까? 다음과 같은 상황을 생각해보자.
A교수님께서 2인 1조의 팀프로젝트를 시키셨다. 골똘히 공부하고 연구한 당신은 기가 막힌 알고리즘을 발견하고 코드를 작성했다. 그러나 친구에게 코드를 보내줬는데 작동이 안된다고 한다. “버전이 안 맞는거 아니야?” “뭔가, 설치를 안한게 아닐까?” “인터넷에서 교수님이 다운받아라고 한 것 다운 받았어?” 수많은 경우의 수와 예상가능한 문제점이 머릿속을 스쳐지나가지만, 일단 잘 모르겠다. 그래도 이건 다행이다. 친구한테 안 보여지는 거니깐. 그런데 만약, 이걸 시연하는 발표무대에서 이런 문제점이 생겼다면 어떨까? 으… 끔찍하다.
위의 사례처럼, 우리의 컴퓨터는 같은 윈도우 10을 사용하고, 같은 Intel CPU를 사용하니깐 같아보이지만 사실 서로 다르다. 좀 더 엄밀히 말해서 같은 A사의 AA노트북을 샀다고 해도 서로 다른 컴퓨터이다. 왜냐하면, 설치되어있는 프로그램이 어떤 버전인지 업데이트는 했는지 등에 따라 서로 다를테니깐! 또한, 다른 개발자들이 만든 프로그램이나 툴들이 많아지면서 이를 사용하게될텐데 설치를 안했을 수도…
시연장소의 컴퓨터를 나의 컴퓨터와 같은 환경을 만들어야한다. 사용중인 컴파일러(언어)의 버전이 몇인지부터 심각하게는 OS버전까지. 이것은 얼마나 귀찮은가? 프로그래머의 3대 미덕은 나태, 자만, 조급이다. 나태하고 조급한 우리는 시연할 컴퓨터의 버전을 맞출 여유가 없다. 설령, 그렇게 하겠다할지라도, 다른 사용자들의 컴퓨터에서 안 돌아갈 가능성이 매우 높다. 그래서 우리는 사용해야한다. 도커를.
The only independent container platform that enables organizations to seamlessly build, share and run any application, anywhere.
어떤 체계(조직)가 어떤 프로그램이든 깔끔하게 빌드, 공유, 작동하게 해주는 컨테이너(Container) 플랫폼이다.
-docker.com
도커의 공식 홈페이지에 위와 같이 적혀있다. 대충 무슨 느낌인지 알겠는데, 그럼 “컨테이너 플랫폼이 뭔데?” 라는 질문이 생길 것이다.
애플리케이션의 코드, 구성 및 종속성을 하나의 객체로 패키징하는 표준화된 방식을 제공합니다. 환경에 상관 없이 빠르고 안정적이며 일관된 배포를 보장합니다.
-Amazon Web Service
Docker 홈페이지에서는 다음과 같이 소개한다.
코드랑 dependency들의 표준화된 묶음이다. 이렇게 하면 다른 컴퓨팅 환경에서도 빠르고 잘(Reliable) 돌아간다.
약-간 다르다. 가상머신(VM)을 설치하면 OS를 설치해야하지만, Docker를 사용하면 OS가 없어도 된다. 물론, VM보다는 성능면에서 느리겠지만, 배포 용량이 작아진다. 즉, 좀 더 가볍다.