Docker 및 컨테이너
Docker는 어플리케이션을 가볍고 독립적인 컨테이너(Container)로 패키징하여 어디서든 일관되게 실행할 수 있게 해주는 도구입니다.
1. 왜 Docker인가?
- 환경 일관성: "내 컴퓨터에서는 되는데?" 문제를 해결합니다. 개발, 테스트, 운영 환경을 완벽히 일치시킵니다.
- 격리: 서로 다른 라이브러리 버전을 사용하는 앱들을 하나의 서버에서 안전하게 실행할 수 있습니다.
- 배포 속도: 이미지를 사용하여 인프라 구성 과정을 생략하고 즉시 앱을 띄울 수 있습니다.
2. Docker 핵심 개념
- 이미지 (Image): 실행 파일, 라이브러리, 설정 등이 포함된 템플릿(붕어빵 틀)
- 컨테이너 (Container): 이미지를 실행한 상태(붕어빵)
- Dockerfile: 이미지를 만들기 위한 명세서
3. Dockerfile 작성 예시
# 베이스 이미지 설정
FROM node:18
# 작업 디렉토리 설정
WORKDIR /app
# 의존성 설치
COPY package*.json ./
RUN npm install
# 소스 복사 및 실행
COPY . .
CMD ["npm", "start"]
4. 핵심 명령어
docker build -t my-app . # 이미지 빌드
docker run -p 8080:80 my-app # 컨테이너 실행 (포트 바인딩)
docker ps # 실행 중인 컨테이너 확인
docker stop [ID] # 컨테이너 중지
다음 장에서는 코드 변경을 자동으로 감지하고 배포하는 CI/CD에 대해 배웁니다.