1️⃣ 도커(Docker)란!?
- 애플리케이션을
컨테이너 라는 표준화 된 유닛으로 패키징 하는 기술
- 컨테이너 안에는 애플리케이션 코드, 런타임, 시스템 도구, 라이브러리 등 실행에 필요한 모든 것이 담김
- 이렇게 잘 담긴 컨테이너만 있으면, 어떤 시스템이든 어떤 서버로든 옮겨서 바로 작동 가능!
2️⃣ 도커를 왜 사용해야 하나!?
- 언제 어디서든 동일하게 작동함!
- 해당 환경 자체를 통째로 패키징하기 때문에 개인 노트북에서 실행된 컨테이너와 클라우드 서버에서 작동한 컨테이너는 동일하게 작동함!
- 빠르고 가벼움!
- 하드웨어를 가상화하는 기존 방식인 가상 머신을 사용할 때에는 무겁고, 느리고, 리소스를 많이 차지함
- 도커는 OS 수준에서 가상화하기에, 호스트의 OS 커넬을 공유하며 앱과 필요한 라이브러리만 격리시킴
- OS 부팅 안 시켜도 몇 초만에 애플리케이션 시작할 수 있음!!
- 유연하고 확장 가능함!
- 트래픽이 몰리는 기능의 컨테이너만 수평적으로 확장하기 용이함
- 각 기능을 별도의 작은 컨테이너로 만들어 독립적으로 개발하고 배포할 수 있음
- 격리를 통한 안정성
- 각 컨테이너는 서로 완벽하게 격리된 환경에서 실행됨
- 하나의 컨테이너가 오류로 중단되어도, 다른 컨테이너에 영향을 주지 않음
3️⃣ 도커의 핵심 개념
1. 이미지
- 컨테이너를 실행하기 위해 필요한 모든 것(코드, 라이브러리, 설정)을 담고 있는 읽기 전용 템플릿
- 이미지는 불변하며, 한 번 만들어지면 바뀌지 않음
2. 컨테이너
- 이미지를 실행한 상태이며, 실제 애플리케이션이 작동하는 격리된 공간
- 하나의 이미지로 수백, 수천 개의 동일한 컨테이너를 생성할 수 있음