2023/02/02 TIL | [Cloud] 배포 컨테이너
💭 오늘의 학습 전략
# Docker
◼️ 핵심 키워드
◾컨테이너
◾이미지
◾레지스트리
◻️ 실습
◽이미지 생성/수정/배포
◽컨테이너 생성/삭제
🌼 학습한 것들
◾ "실행 환경에 구애받지 않고 애플리케이션 실행"
◾Docker (컨테이너 방식)의 장점
▪️ 의존성 충돌 문제 해결
- 애플리케이션 실행: 환경 구축 필요
의존성 충돌의 예: A, B 애플리케이션 실행에 필요한 버전이 다를 때
컨테이너 기술의 해결: 컨테이너에서 실행 중인 앱은 의존성 공유 X (실행 환경 분리)
▪️ 공유와 격리
- 공유: CPU, 메모리 등 컴퓨팅 파워, 리눅스 커널 등
- 격리: 프로세스, 네트워크(컨테이너 하나 당 하나의 IP 할당), 파일 시스템
▪️ 개발 - 배포 환경 일치
- 개발: 애플리케이션 구성 자체를 컨테이너화, OS에 상관 없이 즉시 실행 환경 구성 가능
- 배포: 파일을 컨테이너에 실어 한 번에 배포, EC2에 도커 설치 혹은 ECS 이용
▪️ 수평 확장 쉽게, 각 서버에 릴리즈 쉽게
- 글로벌 웹 서비스 -> 엄청 큰 트래픽 -> 분산을 위한 프록시 서버 운영
- 동일한 이미지를 바탕으로 새로운 서버에 컨테이너화 된 애플리케이션 실행, 로드 밸런서에 해당 서버 추가
- 새로운 버전을 일부 서버에만 올려 운영해서 테스트 가능 (오케스트레이션 도구 ex 쿠버네티스)
◾Docker 핵심 키워드
▪️ 컨테이너
- 애플리케이션이 의존성, 네트워크 환경, 파일 시스템 등에 구애받지 않도록
- 도커 위에서 실행되는 애플리케이션 상자
▪️ 이미지
- 컨테이너를 생성하기 위한, 애플리케이션 ~ 구성까지 담아놓은 템플릿
- 여러 개의 컨테이너 생성 가능 -> 수평 확장
- 기본 이미지(base)로부터 변경사항을 추가/커밋해서 또 다른 이미지 생성
ex) 기본 이미지: Spring Boot / 내가 만든 애플리케이션을 추가해서 새 이미지로
▪️ 레지스트리
- 이미지 저장/배포/공유
- 대표적으로 Docker hub, Amazon ECR 등
- 컨테이너 생성 시 호스트 컴퓨터에 이미지 없으면 자동 다운로드
◾VM과의 차이
- 컨테이너에는 OS가 올라가지 않는다

🔥 보충이 필요한 것들
◾이미지 생성
◾실습 + Advanced
💨 하루를 마치며
1. 고래, 아쿠아리움 실습은 도커를 익히면서도 귀염뽀짝해서 좋았따

2. 게임 실습은 이미지를 다루는 법을 익히면서 재미있었다. 게임도 몇 판 했다😌
3. 그런데 실습을 계속 따라하면서 원하는 결과를 도출해내긴 했지만 혼자 제대로 할 수 있을 만큼 이해하지 못 한 것 같아서 주말을 이용해서 한 번 더 실습을 진행해보려고 한다.
4. 요즘 용량 부족 메세지가 자주 떠서 고민이 많다...^ㅡ^.............