도커 + AWS

moon.kick·2025년 5월 2일

도커(Docker)를 처음 배울 때는 아래와 같이 비교 대상을 함께 보면 개념이 훨씬 더 잘 잡혀요. 도커는 전통적인 가상화 기술(VM), 실제 운영체제(OS), 그리고 도시락/앱스토어 같은 친숙한 개념과 비교하면 이해가 쉬워집니다.


✅ 도커 개념을 비교해서 이해하기 좋은 대상

비교 대상설명도커와의 차이점비유
가상 머신(VM)컴퓨터를 통째로 하나 더 만드는 방식OS도 하나 더 깔고 무겁고 느림VM = 컴퓨터를 통째로 복사
Docker = 🍱필요만 담은 도시락
실제 컴퓨터(OS)Windows나 Mac처럼 하나의 전체 운영체제하나만 실행 가능하고 무겁다OS = 집 전체
Docker = 🛏방하나 빌려 쓰는 느낌
앱 설치PC에 직접 프로그램을 설치하는 방식환경이 다르면 에러날 수 있음설치 = 재료 사서 직접 요리
Docker= 🍱도시락받아바로먹기
도시락/배달음식만들어진 상태로 바로 사용빠르고 간편하지만 직접 수정은 어려움직접 요리 = 설치형
도커 = 🍱완성된 도시락 주문

핵심 요약

  • VM과 Docker 비교는 가장 기본이자 중요한 이해 방식!

    • VM: 무거운 컴퓨터 한 대 더 띄우기
    • Docker: 가벼운 앱 환경만 띄우기 (하나의 OS 공유)
  • 도커는 "공유 주방에서 반찬만 가져다 쓰는 느낌"으로 가볍고 빠르다

  • 다른 환경에서도 항상 똑같이 잘 돌아가게 해주는 것이 가장 큰 장점



✅ 도커(Docker) 쉽게 이해하기

  • 도커는 가볍고 빠르게 컴퓨터 환경을 나누는 도시락 도구야.
  • 우리가 만든 프로그램을 어디서든 똑같이 실행하게 도와줘.
  • 개발자들이 쓰는 진짜 필수 도구 중 하나
구분쉽게 말하면예시 & 비유
1. 가상화 기술여러 컴퓨터처럼 나누는 기술이야🖥 우리 컴퓨터를 여러 개로 나누는 마법!
📦 "가상 머신"은 무겁고 느리지만,
🍱 "컨테이너"는 도시락처럼 가볍고 빠름!
2. Docker란?가볍고 빠른 "도시락 컴퓨터"를 만들고 실행하는 도구야요리를 하려면 도시락통이 필요하지?
Docker는 그 도시락통을 만들어주는 주방장이야!
3. Docker 이미지도시락의 설계도야🍙 안에 들어갈 반찬(코드, 환경 등)을 정리해 둔 그림
이미지는 고정된 상태라서 안전하게 쓸 수 있어!
4. Dockerfile도시락 만드는 레시피야🍳 이걸 보고 Docker가 도시락 이미지를 만들어!
FROM, RUN 같은 요리순서가 적혀 있어
5. Docker 컨테이너도시락을 실제로 만든 것!🍱 이미지(설계도)를 바탕으로 만들어진 진짜 도시락이야
먹고 버릴 수 있고, 여러 개 만들어도 돼!
6. Docker 명령어도커에게 시키는 말이야▶️ docker run : 도시락 만들어 줘!
🔍 docker ps : 지금 도시락 뭐 있어?
⬇️ docker pull : 도시락 설계도 가져와!
7. Docker 레지스트리도시락 이미지(설계도)를 보관하는 냉장고야📦 공개 냉장고 = Docker Hub (누구나 사용 가능)
🔐 사설 냉장고 = 회사에서 따로 쓰는 비밀 창고

✅ 도커(Docker) 핵심 개념 정리표

구분개념/항목설명
1. 가상화 기술전통적 가상화 (Hypervisor)- VM 기반
- 하드웨어 자원 분할 + 각 게스트 OS 실행
- 자원 낭비, 성능 저하 발생
컨테이너 기반 가상화- 하나의 OS 커널 공유
- 컨테이너는 프로세스 수준에서 동작
- 성능 저하 적고 자원 효율 높음
2. Docker정의컨테이너 기반 가상화 플랫폼으로 이미지 생성 및 컨테이너 실행 지원
특징- 경량 & 빠름
- 동일한 실행 환경 보장
- 높은 이식성
3. Docker 이미지개념실행환경 + 코드 + 설정을 묶은 읽기 전용 패키지
예시 구성- 앱 코드
- 라이브러리
- OS 설정
- 환경 변수 등
특징- 변경 불가 (Immutable)
- 안전한 보관 및 공유
4. Dockerfile정의도커 이미지를 생성하기 위한 설정 스크립트
주요 명령어FROM, RUN, COPY, WORKDIR, CMD, EXPOSE
역할이미지 생성 절차를 자동화
5. Docker 컨테이너개념이미지를 실행한 격리된 단위 (프로세스처럼 작동)
특징- 독립적 실행 환경
- 빠른 생성/삭제
- 다른 컨테이너에 영향 없음
활용개발 환경 구축, 테스트, 배포 자동화 등
6. Docker CLI 명령어docker run이미지로 컨테이너 실행
docker ps / docker ps -a실행 중 / 전체 컨테이너 조회
docker images로컬 이미지 목록 확인
docker pull이미지 다운로드 (예: docker pull ubuntu)
7. Docker 레지스트리개념도커 이미지를 저장하고 배포하는 저장소 서버
공개 레지스트리Docker Hub (가장 널리 사용됨)
사설 레지스트리기업 내부용 / 보안 목적 사용

이 표를 PPT 슬라이드용, 프린트용 PDF, Markdown 문서 등 다양한 포맷으로 변환해드릴 수도 있습니다. 원하시나요?

좋습니다! 지금까지 EC2 + Ubuntu + FastAPI 실습 내용을 기반으로, 그리고 앞에서 배운 Docker 개념까지 함께 정리해드릴게요. 실습 흐름과 개념을 한눈에 보기 쉽도록 표 중심 요약과 함께 실습 순서 요약도 같이 제공하겠습니다.


✅ EC2 + Ubuntu + FastAPI 실습 정리

1. 전체 흐름 요약 표

항목내용
목표AWS EC2 인스턴스에 Ubuntu 서버 설치 후, FastAPI 웹 서버 실행
사용 기술EC2, Ubuntu 22.04 LTS, SSH, FastAPI, Uvicorn, Python3, Docker (선택적)
인스턴스 유형t2.micro (프리티어 무료, 1 CPU, 1GB RAM)
AMI 선택Ubuntu Server 22.04 LTS (64-bit x86)
키 페어.pem 파일 생성 → SSH 접속용 개인키
보안 그룹인바운드 규칙: 22(SSH), 8000(FastAPI 웹서버용 포트) 허용
스토리지8GB 기본 (최대 30GB까지 프리티어 무료)
실행 결과브라우저에서 EC2 퍼블릭 IP + 포트 접속 → {"Hello":"World"} 출력

2. 실습 단계 요약 정리

단계명령어/행동설명
① EC2 생성AWS 콘솔에서 t2.micro + Ubuntu 22.04 선택서버 생성
② 키 페어 생성my_app.pem 다운로드SSH 인증 키 (주의: 재발급 안 됨)
③ SSH 접속$ ssh -i my_app.pem ubuntu@<Public-IP>인스턴스 접속
④ Python3 & pip3 세팅bash<br>$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10<br>$ sudo apt update<br>$ sudo apt install -y python3-pip<br>$ sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 10<br>python3과 pip 명령어를 기본으로 지정
⑤ FastAPI 설치$ pip install fastapi "uvicorn[standard]"웹서버 프레임워크 설치
⑥ 코드 작성$ vi main.py + FastAPI 코드 입력텍스트 편집기에서 서버 코드 작성
⑦ 서버 실행$ python3 -m uvicorn main:app --host 0.0.0.0외부 IP에서 접속 가능하게 서버 실행
⑧ 보안 그룹 설정포트 8000 허용인바운드 규칙에서 수동 설정 필요
⑨ 접속 확인http://<Public-IP>:8000/FastAPI 응답 확인 ({"Hello": "World"})

✅ Docker vs EC2 (Ubuntu) 방식 비교

구분EC2 (우분투 직접설치)Docker 기반 방식
환경 구축직접 OS, Python, 패키지 설치 필요Dockerfile만 있으면 자동 구성
가상화 수준전체 VM (하이퍼바이저 기반)컨테이너 (OS 커널 공유)
설치 복잡도수동 구성 필요 (시간 소요)자동화된 이미지 실행 가능
성능약간 무거움 (리소스 고정 할당)가벼움, 유연한 자원 사용
이식성EC2 설정을 다른 서버에 옮기기 어려움Docker 이미지로 손쉽게 이식 가능
운영체제 호환성Ubuntu 기반 (우분투에 종속적)다양한 OS 환경에서 동일 이미지 사용 가능

✅ Docker로 FastAPI 서버 만들기 (비교용 예시)

# FastAPI 서버를 위한 Dockerfile 예시
FROM python:3.10-slim

WORKDIR /app
COPY ./main.py /app
RUN pip install fastapi "uvicorn[standard]"

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
# 이미지 빌드
$ docker build -t my-fastapi .

# 컨테이너 실행
$ docker run -d -p 8000:8000 my-fastapi

이 방식은 EC2든 로컬이든 동일하게 재현할 수 있으며, 훨씬 빠르게 복제 가능한 서버 환경을 구성할 수 있습니다.


필요하시면 위 내용을 PPT용 표/다이어그램, 또는 Markdown 문서, PDF 매뉴얼 등으로 재구성해드릴 수 있어요.
혹시 도커로 FastAPI를 배포하는 실습도 이어서 진행해보고 싶으신가요?

profile
@mgkick

0개의 댓글