AWS

도커(Docker)란? 컨테이너로 앱 배포하기

heesoohi 2025. 3. 16. 10:06

# Docker

 

도커는 앱 배포를 위한 소프트웨어 개발 플랫폼이다. 도커를 사용하면 컨테이너에 앱을 패키징할 수 있으며, 컨테이너에 패키징 된 앱은 어느 곳에서든 매번 같은 방식으로 실행된다. 

 

➡️ 컨테이너를 사용하면 모든 운영 체제에서 쉽게 실행할 수 있다!

 

  • 어떤 기계든 상관없이 호환성 문제 극복
  • 동작 예측 가능
  • 작업량이 적어짐(컨테이너가 다 해주니까!)
  • 유지 보수 및 배포가 쉬움
  • 모든 프로그래밍 언어로 작업할 수 있음
  • OS나 기술에 구애받지 않음
  • 도커를 사용하면 매우 빠르게(몇 초만에) 컨테이너 스케일링 업/다운 가능

위와 같은 장점들 덕분에 오늘날 애플리케이션 배포에 있어 도커가 아주 강력한 도구로 활용되고 있다!

 

 

 

EC2 인스턴스에서 도커를 살펴보면 위와 같은 이미지를 상상할 수 있다. 

 

Java 코드로 실행하는 도커, NodeJS 코드를 실행하는 도커, MySQL 데이터베이스를 실행하는 도커 등등.. 모두 동일한 EC2 인스턴스 위에 존재한다. 

 

➡️ 도커 컨테이너에 애플리케이션을 패키징하면, EC2 인스턴스에서 실행하는 것이 매우매우 쉬워짐!

 

 

🧐 도커 이미지는 어디에 저장될까?

도커 이미지는 따로 생성되어, 컨테이너가 실행되는 방식으로 도커 리포지토리에 저장된다. 

 

공용 도커 리포지토리인 '도커 허브'를 이용할 수도 있는데, 도커 허브에서 여러 기술과 운영 체제에 대한 기본 이미지를 찾아볼 수 있다. 

  • Ubuntu(Linux 운영체제)
  • MySQL
  • NodeJS, Java 등.. 프로그래밍 언어에 대해서도 찾을 수 있음

 

프라이빗 도커 리포지토리로는 'Amazon ECR' 등이 있고, 여기에 개인 도커 이미지를 저장할 수 있다. 

 

 

 

💡 도커에 대해 알아두면 좋은 점

 

도커는 리소스를 호스트와 공유한다. 말하자면 하나의 서버에 여러 컨테이너를 둘 수 있다는 것!

 

아래 이미지로 EC2와 도커를 비교해보면 도커의 특성을 더 쉽게 이해할 수 있다. 

 

 

 

AWS 상에는 인프라, 호스트 운영체제, 하이퍼바이저가 존재한다. 하이퍼바이저에는 액세스가 없고, 여기에 EC2 인스턴스가 생성되면 게스트 운영 체제 위에서 애플리케이션이 올라간다. 이후에 생성될 EC2 인스턴스들도 이와 마찬가지로 인식된다. 

 

도커의 경우에는 인프라 위에 바로 EC2 인스턴스인 호스트 운영체제가 올라가고, 그 위에 도커 데몬이 위치한다. 도커 데몬이 실행되면 그 위에서 여러 컨테이너를 실행할 수 있다. 컨테이너들은 매우 가볍고 패키징되지 않은 상태로 전체 운영 체제나 가상 머신 없이 실행된다. 덕분에 도커를 다용도로 활용하고 스케일링하거나 실행하기 매우 쉬운 것!