< Dev-Kidult />

About docker(도커) #1 docker란? 본문

개발/Etc

About docker(도커) #1 docker란?

개른이 2018. 8. 1. 14:44


About docker(도커) #1 docker란 ?




먼저 노턴고스트라는 프로그램을 아시나요?

(동네 컴퓨터사설업체의 친구(였던프로그램))



초등학생시절 컴퓨터가 고장나면 아저씨가 출장와서 컴퓨터를 밀어줄때 한번씩 봤던 친숙한 아이입니다.

디스크를 포맷하고 윈도우를 설치하고 기타 드라이버랑 유틸프로그램을 깔려고하면 출장나온 아저씨라도 꽤나 시간이 걸렸을껍니다.

하지만 아저씨는 뭐가 고장났는지도 안보고 시디 하나 넣고 15분 끄적거리고 3만원을 받아가셨습니다.

당시 초등학생인 필자는 아무것도 모르고 게임까지 설치해주는 아저씨에게 쥬스를 건내곤 했습니다.


제가 처음 본 docker는 노턴고스트를 생각나게 하는 프로그램이였습니다.






기존에는 주로 OS를 가상화하였습니다.

당연히 OS위에 또 OS를 얹으니 퍼포먼스가 상당히 떨어지는건 당연했습니다.

이후 이러한 문제때문에 여러가지 방법이 나오지만 결국 OS를 가상화 한다는건 변함이 없고 여전히 성능에 문제가 있었습니다.

그리고 이를 개선하기 위해 프로세스를 격리하는 방법이 등장합니다.

리눅스에서는 리눅스 컨테이너라고 단순히 프로세스를 격리시키는 방법이 나옵니다.


docker는 이 리눅스 컨테이너를 기반으로 만들어지게 됩니다.


docker가 리눅스 컨테이너와 같은 그냥저냥한 기능만을 가지고 있었다면 지금과 같이 많이 쓰이는 플랫폼이 아니였을껍니다.

container를 유연하게 사용할 수 있게 하고 image를 배포 관리를 편하게 할 수 있도록 하여 현재 DevOps와 MSA를 잘 운용할 수 있도록 하는데 적합하여 많은 기업들이 채용하며 또 사용하고 있는 플랫폼입니다.


그래서 container와 image가 뭐죠?




(container)



우선 docker공식홈페이지에서는 이렇게 설명하고 있습니다.

Package software into standardized units for development, shipment and deployment

A container image is a lightweight, stand-alone, executable package of a piece of software that includes everything needed to run it: code, runtime, system tools, system libraries, settings. Available for both Linux and Windows based apps, containerized software will always run the same, regardless of the environment. Containers isolate software from its surroundings, for example differences between development and staging environments and help reduce conflicts between teams running different software on the same infrastructure.


쉽게 보면 하나의 커널안에서 독립적인 프로세스 공간을 만들어주는것이 컨테이너입니다.

그림과 같이 하나의 컨테이너에서는 데비안과 자바 그리고 톰켓으로 이루어져있고 다른 하나는 우분투와 php, 그리고 mysql로 이루어져있습니다.

이들의 공간은 상호독립적인 공간으로 하나의 공간에서 작업을 했을 때 생기는 설정으로 인한 충돌이라든가 그런 걱정을 할 필요가 없게 되었습니다.


또한 image 관리를 통해 기존에 자바+톰켓+우분투로 A프로젝트를 진행한다고 가정하였을 때 버전업을 하였을경우 A프로젝트의 이미지만 변경하여 준다거나,

혹시 버그가 생겨 빌드를 다운그레이드 하여야 할 상황이 생겼을때 바로 빌드업 전 가지고 있던 A프로젝트로만 변경을 하면 상당히 버전관리가 쉬워졌으며,

그리고 배포과정에서 스케일 아웃을 하게 되었을 때 보통의 과정에서는 일일히 처음부터 OS를 까는작업부터 설정을 해주어야 했지만,

이미 만들어둔 이미지를 통해 컨테이너를 만들면 쉽게 배포가 가능하도록 돕고있습니다.


그리고 image관리를 마치 git과 github처럼 docker에서는 dokerhub를 운영하고 있습니다.

이미지를 local repository에서 관리할 수 있지만 웹상에 repository를 만들어 관리를 할 수 있습니다

당연히 github처럼 다른사람이 올려놓은 이미지를 받을수도 있습니다 dockerhub를 들어가면 리눅스OS인 ubuntu, centOS 부터 기타등등.. 많은 이미지를 제공하고 있으니 토이프로젝트나 실제 프로젝트를 진행하시게 되었을때 이용하시면은 매우 편리하게 프로젝트설정 및 배포, 운영을 쉽게 진행 할 수 있으니 이용해보면은 docker가 얼마나 괜찮은 플랫폼인지 체감하실수 있을껍니다.


이어서 두번째 포스팅에서는 설치 및 이미지를 받고 컨테이너를 실행시키는 과정까지 포스팅을 적어볼 예정입니다.

기다려주세요~



반응형
Comments