Docker 에 대해서 알아보자.

이상현·2020년 8월 22일
0
post-thumbnail

Docker

프로젝트를 진행하면서 많이 들어는 보았지만, 실제로 내 프로젝트에서 사용해 볼 경험이 없었는데, 이제서야 필요성을 느끼게되어서 온라인에 있는 여러 자료를 통해서 공부해보았다.

가상머신 vs 도커

내가 아는 가상머신은 VMWare, VirtualBox 와 같이 OS 위에 OS 를 설치하는 것으로 알고있다.
학부 과정에서 리눅스를 공부하기위해 VitualBox 프로그램을 이용하여 OSX위에 Ubuntu를 설치하고 과제를 제출했던 경험이 있다.
기억상 MAC을 사용하면서 Linux 환경을 사용할 수 있어서 편했지만, 성능이 그렇게 좋지는 않았었다.
CPU와 메모리를 추가로 할당하여 성능을 높일 수 있지만 나의 맥북 자원은 여유가 있지 않았고, Windows 를 설치했을 때는 계정 로그인때마다 다운이 되서 사용도 못했던 기억이 난다.

위 그림과 같이 호스트 OS위에 게스트 OS를 올리는 구조로 되어있고, 이 때문에 호스트 OS가 가지고 있는 자원을 온전히 사용하기 힘들다.

반면에 도커는 게스트 OS의 설치가 없으며, 하드웨어 가상화가 없어 호스트 OS의 자원을 모두 사용할 수 있고, 가벼운 장점이 있다.

덕분에 이미지를 생성하고, 이를 배포하기에 특화되어있고 클라우드, 서버, 배포의 영역에서 많이 사용되고 있다.

도커 이미지 (Docker Image) 와 도커 컨테이너 (Docker Container)

Image : 서비스 운영에 필요한 서버 프로그램, 소스코드, 컴파일된 실행 파일을 묶은 형태

ubuntu와 같은 OS도 하나의 이미지가 될 수 있고, MySql과 프로그램이나 개인의 프로젝트들도 하나의 이미지가 될 수 있다. 물론 세가지를 모두 합친 os위에 mysql과 프로젝트가 설치된 환경도 하나의 이미지로 만들 수 있다.

Container : 이미지를 실행한 형태

이미지를 실행한 형태이므로 이미지로 만든 OS, 프로그램, 프로젝트를 사용가능하게 된다.
하나의 이미지를 통해 여러개의 컨테이너를 만들 수 있으며, 각각의 컨테이너들은 독립된 환경에서 실행할 수 있게된다.

내가 쉽게 이해한 방법으로는

이미지란 사진을 찍는 행위
컨테이너는 사진을 인화하는 행위

라고 생각했다.

내가 저장하고 싶은 상태를 기록하고 -> 사진
해당 상태를 언제든지 꺼내서 볼 수 있는 -> 인화

도커의 활용

도커는 서버를 관리, 확장, 수정하거나 프로젝트를 배포하는데에 유용하게 사용된다.

클라우드서비스의 서비스의 발전으로 우리는 클릭 하나로 서버 컴퓨터를 사용할 수 있고, 원한다면 수백대의 서버컴퓨터를 사용하여 많은 자원을 사용할 수 있게되었다.

만약 수백대에 서버를 부여받았을 때, 서버를 세팅하기 위해 일일히 기존 서버와의 환경을 동일하게 맞춰줘야 한다면 반복적인 작업에 따른 비용과 시간이 많이 들게 된다.

그런데 해당 서버를 도커 이미지로 만들어놓고 할당받은 각 서버에 컨테이너로 올린다면 어떻게 될까?
앞서 말했던 반복적인 작업들이 자동화되어 비용이 많이 줄어들 게 된다.

Reference

이재홍/가장 빨리 만나는 도커(Docker) slideshare
나동빈/도커(Docker) 활용 및 배포 자동화 실전 초급 youtube
생활코딩/도커 생활코딩

profile
'당신을 한 줄로 소개해보세요'를 이 블로그로 대신 해볼까합니다.

0개의 댓글