이전 회사에서는 기본적으로 도커를 이용하여 MariaDB나 Spring Boot 등 프로그램을 컨테이너화 시켜서 사용하는 일이 흔했습니다.
제가 개발자 생활을 약 3년 동안 하면서 유용하게 사용해온 도커에 대해 정리해보고자 합니다.
#1 Docker란?
컨테이너(Container) 기반의 오픈소스 가상화 플랫폼입니다.
이전에는 프로그램을 한 대의 컴퓨터에서 직접 프로그램을 실행시키는 작업을 하였지만, 이제는 프로그램을 컨테이너화 시켜 격리된 환경에서 프로그램을 돌리는 것입니다.
화물 컨테이너를 생각하면 편합니다.
큰 배에 화물을 실으려면 그냥 물건을 실는거보다 컨테이너에 종류별로 묶어 실으면 물건들이 종류별로 나눠져 관리하기 쉬워집니다.
#2 장점
글보다 사진을 참고하여 이해하면 편합니다.
하나의 OS에 도커를 설치하고 그 위에 각각의 컨테이너로 분리된 앱을 실행을 시키는 것입니다.
커널은 공유하고 프로세스는 공유하는 격리된 환경인 것입니다.
1. 각각의 컨테이너에는 OS 전체가 설치되는 것이 아닌 앱 실행의 필요한 라이브러리와 실행파일만 있어 환경이 경량화 되어 프로그램 실행 속도가 빠르다는 것이 큰 장점입니다.
2. 다른 컨테이너와의 분리된 환경으로 동작하여 보안 상으로 봤을 때 이점이 있습니다.
3. 도커 컨테이너를 사용하여 프로그램 개발/배포 환경을 강제할 수 있습니다.
4. 호스트와 볼륨으로 디스크를 공유하여 백업/복원이 용이하고 다른 서버로도 이전하기 쉽습니다.
5. Docker Hub를 이용하여 다른 개발자들이 미리 만들어둔 이미지를 받아 사용할 수 있습니다.
#2 이미지 (Image)
도커에는 이미지라는 것이 있습니다. 이미지에는 컨테이너에 필요한 파일시스템 및 애플리케이션 설정이 들어있습니다.
컨테이너는 이 이미지를 기반으로 실행됩니다. 템플릿이라고 생각할 수도 있고, 자바로 생각한다면 클래스(이미지)를 만들어두고 이 클래스를 기반으로 객체(컨테이너)로 만드는 것이라고 생각하면 편합니다.
#3 설치 (Installation)
도커 설치는 매우 쉽습니다.
MacOS 기준으로 설명하겠습니다.
1. 아래 링크에서 본인의 환경에 맞는 도커 설치 파일을 다운받아 실행합니다.
https://hub.docker.com/editions/community/docker-ce-desktop-mac
2. 도커 설치 이미지를 실행하여 도커파일을 애플리케이션 폴더로 이동합니다.
3. 설치된 도커를 실행시킵니다.
4. 터미널에서 docker --version을 입력하여 정상적으로 버전이 표시되는지 확인합니다.
설치까지 성공적으로 마쳤습니다. 다음에는 이어서 도커 이미지를 실제로 컨테이너로 띄워보고 컨테이너 여러개를 한번에 띄우고 쉽게 관리할 수 있는 Docker Compose에 관련해서 포스팅하겠습니다.