1. 도커 이해

목차
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 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에서도 즉시 실행 가능
학생 입장에서의 핵심 경험은 다음과 같습니다.
"서버 코드를 만들고,
그 서버를 하나의 실행 파일처럼 배포한다"