Infrastructure/Docker

0. 도커? 뭔데 쓰는걸까?

Jinlib 2022. 1. 22. 13:02

도입 배경

많은 사람들이 도커 도커 말은 대충 많이 하는데, 무엇인지 정확히는 몰랐다.
그러던중 아래와 애로 사항를 실제로 겪어왔었고 이 글을 보시는분들도 비슷한 경험을 했다면 도입을 고려하시길 추천드린다.

  1. 서버구축 수업때의 경험을 잠시 빌리자면, CentOS 등 리눅스 OS설치와 Oracle을 설치하면서 원인모를 오류들을 대처하느라 ./congigure, make && make install을 수도없이 쳐왔었다.
  2. python Deep learning 대표 library인 tensorflow 실습도중 version 이슈 때문에 실습 매뉴얼과 똑같이 구상했는데도 오류가 났었다.
  3. 분명 내가 1년전 짰던 코드이고 다시 실행시켰을때 동작하지 않는 경우가 생겼다.
  4. 내가 만든 서비스가 다른OS에서도 호환성을 가지고 있는지 테스트하기위해서 VMware, virtualbox(호스트OS)와 같은 가상화프로그램을 사용해왔다. 컴퓨터 리소스를 너무 많이 잡아먹어서 컴퓨터가 느려졌었다.
  5. 회사에서 AI 프로젝트시 데이터 사이언티스트와 머신러닝 엔지니어에게 효율적인 자원관리를 할 수 있는 인프라를 제공하고 싶은데, 사원들의 개발환경이 각자 모두 다르다.

이러한 애로 사항을 해결해주는 것이 바로! 도커(docker)다.

귀여운 고래 Logo 행복해보인다.

도커(docker)란?

컨테이너 기반 오픈소스 가상화 플랫폼

도커(docker)를 한 문장으로 표현하자면 컨테이너 기반 오픈소스 가상화 플랫폼 으로 표현할 수 있다. 좀 더 자세히 알아보자.

컨테이너?(Container)

배위의 많은 선적들이 담긴 배를 상상해보자.

여러 컨테이너가 적재되어 있고, 각 컨테이너에는 다양한 물품을 담고 있는것을 알 수 있다.
도커도 이러한 컨셉이다. 귀여운 고래 도커엔진 위 각 컨테이너에는 각기 다른 소프트웨어의 조합으로 이뤄서 만들 수 있다.
어떤 컨테이너는 CentOS(OS) + Oracle(DB)를 또 어떤 컨테이너는 Ubuntu(OS) + Python(Lang) + Tensorflow(Lib) 등 다양한 조합으로 컨테이너를 구성할 수 있다.
이러한 도커(docker)의 컨테이너 특성은 도입 배경의 1,2,3. 애로사항을 해결할 수 있다.

가상화 플랫폼?

써본 독자들도 있겠지만, 도커는 VMware나, VirtualBox 처럼 가상화 플랫폼이다. 가상화라 함은 간단히 말해서 가령 어떤 개발자가 Window노트북을 쓰는데, Linux를 써보고 싶다! 하면 가상화플랫폼은 해당 환경을 제공할수있다. 컴퓨터 속의 작은 컴퓨터를 상상하면 좋을것같다.

vmware로 mac os 위에 windows 10를 구동시킨 모습 

하지만, 단점으로 애로사항에도 말했듯이 이것은 물리적인 하드웨어 자원위에 OS를 설치하여 동작하기 떄문에 리소스를 많이 잡아 먹는다.
반면, 도커는 Application layer 위에서 여러개의 App 형태로 동작한다.
이러한 도커(docker)의 가상화 플랫폼 특성은 도입 배경의 4. 애로사항을 해결할 수 있다.

더보기

쿠버네티스(Kubernetes; k8s)를 공부해야한다!
그러나, 쿠버네티스를 이해하기 위해서는 도커(docker)에 대한 이해가 필수이므로 먼저 docker를 알아보자.

다음 게시글에서는 실제로 도커를 써보도록 하자.