목차

더보기

1. 도커 이해

 

2. 도커 이미지, 컨테이너 이해

 

3. Dockerfile 학습

 

4. 이미지 빌드 및 로컬 실행 

 

5. Docker Compose로 배포 표준화 

 

6. 다른 환경 배포, 실행

 

7. AWS EC2에 Docker 서버 배포 실습


1. Docker 설치

더보기

Docker 설치가 필요한 이유

Docker는 단순한 프로그램이 아니라 다음 요소로 구성됩니다.

  • Docker Engine (컨테이너 실행 핵심)
  • Docker CLI (명령어 도구)
  • 컨테이너 네트워크/스토리지 관리 기능

즉, Python처럼 "파일 하나 실행" 개념이 아니라
시스템 레벨 도구이기 때문에 반드시 설치가 필요합니다.

 

2-4. Docker 설치 확인

터미널(명령 프롬프트)에서 다음 명령어를 실행합니다.

 
docker --version

정상 결과 예시:

 
Docker version 26.x.x, build xxxxxxx

이 결과가 나오면 Docker CLI는 정상입니다.

 

1. 도커에 관하여

더보기

 

 

 

ㄴ 1.1 왜 컨테이너를 배우는가?

더보기

 

  • 운영체제(OS) 차이
  • Python, 라이브러리, 프레임워크 버전 차이
  • 시스템 패키지(SSL, libc 등) 차이
  • 실행 경로 및 환경 변수 차이

컨테이너(Docker) 는 이러한 문제를 근본적으로 해결하기 위해 등장했습니다.

현대 서버 개발과 배포 환경에서는
"내 PC에서는 잘 되는데, 다른 환경에서는 안 된다"는 문제가 빈번하게 발생합니다.

 

ㄴ 1.2 컨테이너란 무엇인가?

더보기

 

컨테이너는 OS 전체를 포함하지 않습니다.

대신 다음 요소만을 포함합니다.

  • 애플리케이션 실행에 필요한 코드
  • 런타임(Python 등)
  • 라이브러리 및 의존성
  • 설정(Environment Variables)
  • 실행 명령

즉, 컨테이너는 다음과 같이 정의할 수 있습니다.

"애플리케이션 하나를 실행하기 위한 독립적인 실행 환경"

 

가상머신(VM)과 컨테이너 비교

  • VM은 "컴퓨터를 하나 더 만드는 것"
  • 컨테이너는 "프로그램 실행 환경을 포장하는 것"

 

1-4. 컨테이너는 OS가 아니다

많은 초보자가 착각하는 부분입니다.

컨테이너 내부에서 Linux 명령어를 사용할 수 있지만,
이는 Linux OS가 실행되는 것이 아니라
호스트 OS의 커널을 공유하는 구조입니다.

즉,

  • Windows + Docker → Linux 컨테이너 실행 가능
  • 컨테이너는 독립된 커널을 가지지 않음
  • 프로세스 격리 기술(cgroups, namespaces)을 사용

 

1-5. 컨테이너의 가장 중요한 목표

"로컬과 동일한 실행을 재현"

컨테이너의 핵심 목표는 단 하나입니다.

"어디서 실행하든 동일하게 동작하도록 만드는 것"

이를 위해 컨테이너는 다음을 고정합니다.

  • Python 버전
  • 라이브러리 버전(PySide6 등)
  • 실행 파일 구조
  • 환경 변수
  • 실행 명령

결과적으로,

  • 개발자 PC
  • 교육용 실습 PC
  • 다른 강사의 PC
  • 클라우드 서버

모두 완전히 동일한 실행 결과를 보장할 수 있습니다.

 

이번 학습과정 목표

더보기

이번 채팅 서버 프로젝트에서 Docker는 다음 역할을 수행합니다.

  • Python + PySide6 실행 환경 고정
  • 서버 실행 방식 표준화
  • 포트(8888) 외부 노출
  • 다른 PC에서도 즉시 실행 가능

학생 입장에서의 핵심 경험은 다음과 같습니다.

"서버 코드를 만들고,
그 서버를 하나의 실행 파일처럼 배포한다"