[etc] Docker

Docker

공식 홈페이지

도커(Docker)의 개요

도커(Docker)란 리눅스컨테이너를 기반으로 하여 특정한 서비스를 패키징하고 배포하는데 유용한 오픈소스 프로그램입니다.

기존에 다양한 형태로 개발을 하셨던 분들이라면, Maven, Gradle, FTP 등의 다양한 패키징 및 배포 도구를 사용해보신 적이 있으실 건데, 이러한 배포 도구들이 사용되었던 이유는, 특정한 소프트웨어를 개발한 이후에 배포하고자 할 때 해당 프로그램이 어디에선가 손쉽게 구동이 되도록 하기 위해서입니다. 예를 들어 열심히 웹 개발을 했는데, 실제로 접속이 가능한 웹 서버에 배포를 하지 못한다면, 누구도 그 서비스를 이용할 수 없겠죠?

예를 들어 이전에 JSP를 이용해서 웹 사이트를 개발했는데, 웹 사이트를 개발한 이후, 마지막 단계는 배포 및 운영 단계입니다.

그럴 때는 카페24 나 AWS 등의 클라우드 서비스를 이용해 웹 서비스를 배포하는 것이 일반적입니다. 그런데, 일반적으로 이러한 ‘호스팅 서비스’는 우리의 로컬 컴퓨터와는 차이점이 존재합니다. 특정한 서버 환경에 우리가 만든 웹 서비스를 맞추어서 배포해야 하므로 갖가지 설정이 필요하게 됩니다. 초기 상태에서 시작한다면 JVM을 설치해야 되고, 톰캣(Tomcat)도 필요하고, 등 할 게 많습니다. 또 같은 리눅스라고 해서 괜찮은 것도 아니고, 리눅스 버전에 따라서도 설치 방법이 다르답니다.

컨테이너

그래서 등장한 것이 바로 ‘컨테이너’ 의 개념입니다.

도커를 설치하면, 컨테이너에 '이미지(image)'를 담아서 구동시키는 방식으로 손쉽게 배포할 수 있습니다. 이러한 컨테이너를 어떻게 만들고, 활용할 지에 대해서는 미리 도커 소프트웨어가 정의를 해 놓고 있어서 도커를 사용하는 우리들은 단순히 이미 배포된 소프트웨어 이미지를 도커를 통해 컨테이너에 올리면 됩니다. 다시 말해 우리는 도커만 설치를 하면 나머지는 알아서 설정이 이루어지게 됩니다. JVM, 톰캣 등을 따로 따로 설치할 필요가 없으면 도커 하나만 있으면 이 친구가 알아서 해결해줍니다.

image-20200715012857268

위 그림과 같이 도커 파일(Docker File) 이라는 것을 만들어서 ‘나는 어떠한 소프트웨어를 컨테이너에 담아서 구동시킬 것이다.’ 라는 것만 정확히 명시해주고 빌드(Build) 해주면, 알아서 도커 이미지가 그에 맞게 생성이 됩니다. 그래서 그 이미지를 구동시키면 순식간에 (웹 서버도 몇 초만에 뚝딱!) 도커 컨테이너 위에서 실행이 됩니다.

물론 도커 이전에도 이러한 컨테이너(Container) 기반의 기술이 다수 존재했었는데, 도커의 고유한 창의적인 기능과 편리함 때문에 현재 도커가 패키징, 배포 시장을 잠식하고 있는 상태입니다. 도커는 말씀 드렸듯이 컨테이너(Container) 형태로 동작하는데, 기존에 VM(Virtual Machine) 서비스를 이용해 본 적이 있으신 분들이라면 다소 헷갈릴 수 있으므로, 그래서 VM 과 도커가 어떻게 다른 기술인지 확실히 이해해야 합니다.

VM(Virtual Machine)과 컨테이너(Container)는 무엇이 다를까?


이론적인 부분은 아직 배경지식이 적어서 이해가 되지 않아 추후 정리예정

사용법을 위주로 도커활용과 왜 쓰이는지, 어떻게 쓰는 지, 사용 장점등을 위주로 학습예정..

##

도커 윈도우 사용후 튜토리얼 따라하기

튜토리얼 설명 영문판

쿠버네티스 k8s

도커가 익숙해지면 공부해야 될 내용.