記錄

[docker] docker 컨셉 및 기초 본문

Infra/docker

[docker] docker 컨셉 및 기초

surhommejk 2019. 9. 2. 20:55

docker는 원래 '부두 노동자' 라는 뜻으로 항구에 정박한 배에 실려있는 물자를 내려서 육지로 옮기거나 혹은 육지에서 어디론가로 수송할 화물을 배에 싣는 노동자를 뜻하는 단어이다. 처음 docker에 대해서 공부할 때에는 그냥 그런가보다 하고 지나갔던 뜻인데 공부하면 할 수록 이 '부두 노동자'로서의 기능이 더욱 뚜렷해보여서 네이밍을 굉장히 잘했다는 생각이 든다.

하지만 단순히 '부두 노동자'라고 해서 물건 싫어 나르는 '사람'을 생각하면 docker에 대해 직관적으로 이해하기 힘든 것 같다. docker에 대해 직관적으로 이해하려면 내가 생각하기에는 아래의 사진이 도움이 될 것 같다.

오늘날의 docker

이 사진에서의 포인트는 '컨테이너'이다. 컨테이너에는 옮기고자 하는, 혹은 당장 옮기진 않더라도 보관해뒀다가 나중에 옮기려고 하는 목적으로 '싸놓은' 상자이다.

여기서 docker 에서 제공하는 원문에서 발췌한 docker에 대한 설명을 보면 아래와 같다.

https://www.docker.com/resources/what-container

 

내가 아직 도커를 다 공부하진 못했지만 지금까지 여러 블로그 포스팅들이나 유투브를 봤는데 결국 저 두 문단 안의 내용을 벗어나는 것은 없었다. 그만큼 저것을 곱씹어보면 docker가 무엇을 의미하는지 느낄 수 있다고 생각한다.

 

*** 번역

컨테이너는 모든 코드와 모든 의존성들을 하나의 단위로 패키징 해둔 '소프트웨어의 표준적인 단위' 이다. 이를 이용하면 컴퓨터 환경에 얽메임 없이(개발한 환경과 배포하는 환경이 달라도) 어플리케이션을 빠르고 확실하게(여기서 reliably 는 '애먹을 것 없이 확실히'의 뉘앙스다) 배포가 가능하다.

도커 컨테이너 이미지(보통 다른 곳에서 '도커이미지'라고 표현하는 것)는 소프트웨어가 구동(run)되기 위해 필요한 코드, 런타임, 시스템 툴, 시스템 라이브러리, 세팅 등을 총 망라하고있는 실행 가능한 패키지라고 할 수 있다.

컨테이너 이미지는 'Docker Engine'위에서 작동(run)될때 비로소 '컨테이너'로 구체화 된다.(일부 블로그 등에서 도커 이미지를 '추상화'라고 표현하고 있는데 이와 같은 맥락이다)  리눅스와 윈도우 어쩌고 저쩌고..(중략)

 

정말 줄여서 요약하자면,

"소프트웨어 컨테이너(화물)를 배포(수송)하기 위해서 이를 도와주는(배에 싣고 내려주는) 오픈소스 프로젝트(부두 노동자)"

라고 할 수 있다.

 

도커의 장점은 여러가지 있으나 복습용 포스팅이기 때문에 여기에 구구절절히 내가 정리할 필요는 없고 정리가 잘된 포스팅의 링크를 남긴다. 개인적으로 이 블로그가 정리가 잘 되있었다고 생각한다.

https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html

 

장점중 인상적이었던 것 것은 기존의 VM 방식에서 발생한 오버헤드를 줄여준 것이었다. 기존에는 서버 환경과 소프트웨어가 구동하는 환경이 다를때(OS 포함) OS까지 통째로 가상화하여 서버 OS위에 얹어서 사용했다면, docker는 오직 docker 엔진 위에 컨테이너들만 얹어서 호스트의 컴퓨터 자원을 공유(정확히는 커널 자원을 공유)하면서 소프트웨어가 작동하기 때문에 그 전에 발생한 비효율이 대폭 줄어든다는 장점이 있었다. 또, 도커이미지를 도커 허브나 도커 레지스트리에서 공짜로 보관해준다는 것도 인상적이었다. 돈이 그게 감당이 되는지 신기하다.

개념적인 부분은 여기서 끝내고 전체 플로우를 따라 그 과정을 기록할 생각이다.

로컬에서 개발까지 끝마치고(그냥 프로젝트 생성해서 '헬로 월드' 나오는 것으로 개발은 끝) 도커 이미지까지 만들어서 이를 도커 허브나 도커 레지스트리에 올리고 aws상에 인스턴스를 뚫은 뒤 거기서 도커를 설치하고 내가 로컬에서 올린 이미지를 받아 배포까지 끝내는 일련의 과정을 기록으로 남겨 보겠다.

'Infra > docker' 카테고리의 다른 글

[docker] docker 로그 저장 위치 및 저장 용량 이슈  (0) 2019.09.02
Comments