MMeshOps
Docker와 Docker Compose: 개발 환경을 하나로 통일하는 도구
9예상 3입문

[요약] Part 2. 컨테이너를 내 마음대로 다루기

Part 2. 컨테이너를 내 마음대로 다루기의 핵심 내용을 정리하고 복습하는 요약 회차입니다.

  • 학습 목표: 컨테이너를 제어하는 핵심 명령어와 필수 옵션 마스터
  • 주요 내용: `Dockerfile` 작성법, 포트 매핑, 볼륨(데이터 보존), 환경 변수 주입
  • 요약 포인트: 내 코드를 이미지로 빌드하고 원하는 설정으로 안전하게 실행하는 실무 테크닉 암기

Dockerfile 작성 예시

FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["npm", "start"]

1. 이미지 빌드와 실행 제어

  • `Dockerfile` 핵심 명령어:
  • `FROM`: 베이스 이미지 지정 (시작점)
  • `WORKDIR`: 작업 디렉토리 설정
  • `COPY`: 파일 복사
  • `RUN`: 빌드 중 명령어 실행 (의존성 설치 등)
  • `CMD`: 컨테이너 실행 시 기본 명령어
  • 빌드 및 실행:
  • `docker build`: 나만의 이미지 생성
  • `docker run`: 컨테이너 실행 (`-d` 백그라운드, `--restart always` 자동 재시작)

2. 외부 소통 및 데이터 관리

포트 매핑 (Port Mapping)

  • 목적: 격리된 컨테이너에 외부에서 접속할 수 있도록 문을 열어줌
  • 사용법: `-p 호스트_포트:컨테이너_포트` (내 컴퓨터 트래픽 -> 컨테이너 전달)

데이터 영구 보존 (Volume & Mount)

  • 목적: 컨테이너 삭제 시 데이터가 날아가는 휘발성 극복
  • 사용법: `-v 호스트_경로:컨테이너_경로` (DB 데이터 보존, 소스 코드 실시간 반영)

환경 변수 주입 (Environment Variables)

  • 목적: 비밀번호, API 키 등 민감한 설정값 하드코딩 방지 및 이미지 재사용성 확보
  • 사용법: `-e 키=값` 또는 `--env-file` 옵션으로 실행 시점에 설정값 주입

컨테이너 실행 핵심 옵션 복습

  • -d : 터미널을 닫아도 서버가 계속 돌아가도록 백그라운드에서 실행
  • -p 8080:80 : 내 컴퓨터의 8080 포트를 컨테이너 안의 80 포트와 연결
  • -v my-vol:/data : 데이터를 영구적으로 보존하기 위해 폴더를 마운트
  • -e API_KEY=secret : 컨테이너 내부에 필요한 비밀 설정값을 주입

개념 퀴즈

퀴즈 답을 맞춰야 학습 완료가 됩니다.

다음 중 컨테이너를 삭제하더라도 데이터베이스에 쌓인 데이터가 날아가지 않도록, 안전하게 내 컴퓨터와 연결해주는 옵션은 무엇인가요?

3줄 요약

  1. 1Dockerfile은 FROM, COPY, RUN 등의 명령어로 내 프로그램을 컨테이너화하기 위한 레시피 문서입니다.
  2. 2도커 컨테이너는 격리된 환경이므로 -p 옵션으로 포트를 매핑하고, -v 옵션으로 볼륨을 연결해야 실무에 활용 가능합니다.
  3. 3보안상 중요한 값들은 소스 코드에 하드코딩하지 않고, -e 옵션이나 .env 파일을 이용해 환경 변수로 안전하게 주입합니다.