개요
- 서비스로 AWS 를 사용중인데 MSA 구조여서 그런지는 모르겠지만 EC2 인스턴스를 다수 사용하고 있고, 인스턴스마다 모두 Docker 를 설치하여 성격에 맞는 것들끼리 모아서 실행시킨다.
- 우리는 App 을 만들기 위해 여러 소프트웨어(Web Server, DB 등)을 설치하여 환경을 구성한다.
- Docker 를 통해 쉽고 간단하게 소프트웨어, 실행 환경을 컨테이너로 추상화 시키고 배포해보자.
Docker
- 컨테이너 기반의 오픈소스 가상화 플랫폼
- 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있다.
- Docker 와 같은 Container 기술은 Linux OS 의 기술이다.
- 다양한 프로그램(image), 실행 환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해준다.
- 어떤 프로그램(백엔드 프로그램, 데이터베이스 서버, 메시지 큐 등)도 컨테이너로 추상화할 수 있고 어디에서든 실행(조립 PC, AWS, Azure, Google cloud 등)할 수 있다.
Container

- Host OS 에서 실행되는 각각의 실행 환경이다.
- Docker 컨테이너는 OS 전체를 가상화한 가상 머신(VMware, VirtualBox) 같은 방식이 아닌 App 을 실행하는 데 필요한 lib 와 실행 파일들 Bin 들만 포함되어 있다.
- 이 방법은 단순히 프로세스를 격리 시키기 때문에 가볍고 빠르게 동작한다.
Docker 를 사용하는 이유
- AWS 에서 Docker 를 사용하면 코드를 빠르고 원활하게 이동 시키고, 어플리케이션 운영을 표준화하고, 리소스 사용률을 높여 비용을 절감할 수 있다.
- 어디서나 안정적으로 실행할 수 있는 단일 객체를 확보하게 된다.