안녕하세요, 정보관리기술사 최규선이에요.

DevOps 일을 하다 보면 도커 질문을 정말 많이 받아요. 오늘은 처음 접하는 분도 바로 써볼 수 있게 개념부터 보안, 라이선스까지 정리해 볼게요.

가격과 라이선스는 2026년 10월 기준 Docker 공식 홈페이지를 확인했어요.

도커가 뭐지?

도커(Docker)는 앱과 실행 환경을 '컨테이너'라는 상자에 담아 어디서나 똑같이 실행하게 해주는 도구예요.

컨테이너 vs 가상머신

  • 가상머신: OS 전체를 통째로 띄워서 무겁고 부팅이 느려요
  • 컨테이너: 호스트 OS 커널을 공유해서 가볍고 빨리 떠요

꼭 알아야 할 3가지

  • 이미지: 실행에 필요한 파일을 묶은 읽기 전용 템플릿
  • 컨테이너: 이미지를 실제로 실행한 인스턴스
  • 레지스트리: 이미지를 저장·공유하는 곳 (대표적으로 Docker Hub)

Docker Desktop 이미지 레이어 화면

이미지는 여러 레이어가 쌓인 구조예요. Docker Desktop에서 레이어별 내용을 볼 수 있어요. (출처: Docker 공식 문서)

왜 쓰나

개발자 PC, 테스트 서버, 운영 서버마다 OS 버전과 라이브러리가 조금씩 달라서 생기는 문제가 생각보다 많아요.

"내 PC에선 되는데 서버에선 안 돼요" 문제를 줄여줘요. 라이브러리 버전과 설정까지 이미지에 함께 담기 때문이에요.

  • 배포 일관성: 개발·테스트·운영이 같은 이미지로 동작
  • 빠른 복구: 문제가 생기면 이전 이미지로 되돌리기 쉬움
  • 자원 효율: 한 서버에 여러 서비스를 가볍게 운영

기본 사용법

설치 선택지

  • Windows·macOS: Docker Desktop (Engine, CLI, Compose, Kubernetes를 한 번에 설치)
  • Linux 서버: Docker Engine (오픈소스)

필수 명령어 5개

docker run -d -p 8080:80 nginx
docker ps
docker images
docker logs 컨테이너ID
docker stop 컨테이너ID
  • run: 컨테이너 실행
  • ps: 실행 중인 컨테이너 보기
  • images: 내려받은 이미지 보기
  • logs: 로그 확인
  • stop: 컨테이너 중지

-d는 백그라운드 실행, -p 8080:80은 내 PC 8080 포트를 컨테이너 80 포트에 연결한다는 뜻이에요. 이미지가 없으면 Docker Hub에서 자동으로 받아와요.

Docker Desktop 컨테이너 목록

실행 중인 컨테이너의 상태, 포트, CPU 사용량을 한눈에 보는 화면이에요. (출처: Docker 공식 문서)

Dockerfile 예시

내 앱을 이미지로 만드는 설계도예요. 파이썬 웹앱이라면 이 정도로 시작할 수 있어요.

FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
USER 1000
CMD ["python", "app.py"]

빌드는 docker build -t myapp . 한 줄이면 돼요.

docker compose

웹, DB처럼 여러 컨테이너를 compose.yaml 파일 하나로 묶어 관리해요. docker compose up -d로 한 번에 띄우고, down으로 한 번에 내려요. DB 비밀번호는 .env 파일로 분리했어요.

services:
  web:
    build: .
    ports:
      - "8080:8000"
  db:
    image: postgres:16
    env_file: .env
    volumes:
      - dbdata:/var/lib/postgresql/data
volumes:
  dbdata:

Docker Compose로 실행한 컨테이너 묶음

compose로 띄운 앱과 MySQL 컨테이너가 한 묶음으로 보이는 화면이에요. (출처: Docker 공식 문서)

활용 사례

  • CI/CD: 빌드 결과를 이미지로 만들고, 같은 이미지를 테스트와 운영에 배포
  • ITS·공공 시스템: 수집 서버, API, 모니터링 도구를 컨테이너로 분리해 버전 관리
  • 망분리 환경: 이미지를 파일로 저장(docker save)해 반입하는 방식도 쓰여요

제 블로그도 Fly.io에 배포하는데, Fly.io가 Dockerfile로 이미지를 빌드해서 띄우는 방식이에요.

보안 주의점

  • 공식·검증 이미지 사용: Docker Hub의 Docker Official Images, Verified Publisher 위주로
  • root 실행 지양: Dockerfile에 USER로 일반 사용자 지정
  • 시크릿 금지: 비밀번호·API 키를 이미지에 넣지 말고 실행 시 주입
  • 취약점 스캔: Docker Scout 등으로 이미지 CVE 점검
  • 최소 이미지: Docker Hardened Images 카탈로그가 Apache 2.0으로 무료 공개돼 있어요
  • .dockerignore: .env, .git, 로그 파일이 이미지에 들어가지 않게 제외

Docker Desktop에서 이미지 검색

Docker Desktop에서 Docker Hub 이미지를 검색하고 바로 받는 화면이에요. (출처: Docker 공식 문서)

라이선스와 가격

Docker Engine 같은 오픈소스는 무료예요. 다만 Docker Desktop은 조건이 있어요.

  • 무료: 직원 250명 미만이면서 연매출 1천만 달러 미만 기업, 개인, 교육, 비상업 오픈소스
  • 유료 필요: 그 이상 규모 기업의 업무용, 정부기관

공공기관에서 Docker Desktop을 쓴다면 구독 여부를 꼭 확인하세요.

  • Personal: 무료 (1명)
  • Pro: 연간 월 $9, 월간 $11 (1명)
  • Team: 연간 월 $15, 월간 $16 (최대 100명)
  • Business: 연간 월 $24 (인원 제한 없음, SSO 등 관리 기능)

모두 사용자 1명당 가격이에요. 무료 Personal은 Docker Hub 이미지 받기가 사용자당 시간당 100회로 제한돼요. 원화 결제 금액과 부가세는 공식 홈페이지 확인 필요예요.

FAQ

Q. 도커와 쿠버네티스는 뭐가 달라요?

도커는 컨테이너를 만들고 실행하고, 쿠버네티스는 많은 컨테이너를 여러 서버에서 관리해요.

Q. 리눅스 서버도 유료인가요?

Docker Engine은 오픈소스라 라이선스 비용이 없어요. 유료 조건은 Docker Desktop 기준이에요.

Q. 컨테이너를 지우면 데이터도 사라지나요?

네, 컨테이너 안에만 있으면 사라져요. DB 데이터는 볼륨에 저장하세요.

Q. 윈도우 PC에서도 되나요?

Docker Desktop을 설치하면 돼요. 회사 PC라면 위 라이선스 조건부터 확인하세요.

마무리

도커는 "어디서나 똑같이 실행"을 만들어 주는 DevOps의 기본기예요.

공식 이미지, 일반 사용자 실행, 시크릿 분리만 지켜도 훨씬 안전하게 시작할 수 있어요.

다음 글: 쿠버네티스 입문, 도커 다음 단계