개발자를 위한 Docker 입문 가이드 – 설치부터 배포까지

a laptop computer sitting on top of a wooden table
Photo by Berat Bozkurt on Unsplash

Docker는 현대 개발 환경에서 필수가 된 컨테이너 기술입니다. 개발 환경 설정에서 배포까지, Docker를 제대로 알면 작업 효율성이 극적으로 향상됩니다. 이 가이드를 완료하면 로컬에서 간단한 웹 애플리케이션을 Docker로 컨테이너화하여 실행할 수 있게 됩니다.

💡 완성 후 얻는 결과: 개발 환경을 컨테이너로 패키징하여 어떤 서버에서도 동일하게 실행할 수 있는 능력

시작하기 전 준비사항

Docker 설치와 실습을 위해 다음 항목들을 먼저 준비해주세요:

  • Windows 10 Pro/Enterprise 이상, macOS, 또는 Linux 운영체제
  • 최소 4GB 이상의 RAM (8GB 권장)
  • 관리자 권한으로 프로그램 설치 가능
  • 간단한 명령어 터미널 사용 경험
  • 텍스트 에디터 (VS Code, Sublime Text 등)
⚠️ 주의: Windows Home 에디션은 Docker Desktop 대신 Docker Toolbox 또는 WSL2 설정이 필요합니다.
a man using a laptop computer on a wooden table
Photo by Fahim Muntashir on Unsplash

Step 1: Docker 설치하기

Windows/Mac 설치

  1. Docker 공식 사이트(docker.com/get-started)에 접속합니다
  2. 운영체제에 맞는 Docker Desktop을 다운로드합니다
  3. 설치 파일을 실행하고 기본 설정으로 설치를 완료합니다
  4. 설치 완료 후 컴퓨터를 재시작합니다
  5. Docker Desktop 아이콘을 실행하여 서비스를 시작합니다

설치 확인하기

터미널(명령 프롬프트)을 열고 다음 명령어를 입력하여 설치를 확인합니다:

docker --version
docker run hello-world

버전 정보가 출력되고 “Hello from Docker!” 메시지가 나타나면 설치가 성공적으로 완료된 것입니다.

Step 2: Docker 기본 개념 이해하기

Docker를 효과적으로 사용하려면 핵심 개념들을 먼저 이해해야 합니다.

개념 설명 예시
이미지(Image) 실행 가능한 패키지 nginx, node:16
컨테이너(Container) 이미지의 실행 인스턴스 실행 중인 웹서버
Dockerfile 이미지 생성 명령서 빌드 스크립트

가장 중요한 것은 이미지는 읽기 전용 템플릿이고, 컨테이너는 그 템플릿으로 만든 실행 환경이라는 점입니다. 하나의 이미지로 여러 개의 컨테이너를 만들 수 있습니다.

a laptop computer sitting on top of a wooden desk
Photo by Nangialai Stoman on Unsplash

Step 3: 첫 번째 컨테이너 실행하기

실제로 웹서버 컨테이너를 실행해보며 Docker의 동작 원리를 체험해보겠습니다.

Nginx 웹서버 실행

  1. 터미널에서 다음 명령어를 실행합니다:
docker run -d -p 8080:80 --name my-nginx nginx
  1. 브라우저에서 localhost:8080에 접속합니다
  2. “Welcome to nginx!” 페이지가 나타나는지 확인합니다
  3. 실행 중인 컨테이너 목록을 확인합니다:
docker ps

명령어 옵션 설명

  • -d: 백그라운드에서 실행(detached mode)
  • -p 8080:80: 호스트 8080 포트를 컨테이너 80 포트로 연결
  • --name: 컨테이너에 이름 부여
  • nginx: 사용할 이미지 이름
💡 팁: 처음 실행 시 이미지가 없으면 Docker Hub에서 자동으로 다운로드됩니다. 이 과정을 “pull”이라고 합니다.

Step 4: 직접 Dockerfile 작성하기

이제 직접 웹 애플리케이션을 Docker 이미지로 만들어보겠습니다. 간단한 HTML 페이지를 nginx로 서비스하는 예제입니다.

프로젝트 폴더 생성

  1. 새 폴더 my-docker-app를 생성하고 이동합니다
  2. index.html 파일을 생성하고 다음 내용을 작성합니다:



    My Docker App


    

안녕하세요! Docker로 배포한 웹사이트입니다.

현재 시간:

document.getElementById('time').textContent = new Date();

Dockerfile 작성

같은 폴더에 Dockerfile (확장자 없음)을 생성하고 다음 내용을 작성합니다:

FROM nginx:alpine
COPY index.html /usr/share/nginx/html/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

각 줄의 의미는 다음과 같습니다:

  • FROM: 베이스 이미지 설정 (nginx의 경량버전)
  • COPY: 로컬 파일을 컨테이너로 복사
  • EXPOSE: 사용할 포트 번호 지정
  • CMD: 컨테이너 시작 시 실행할 명령어

Step 5: 이미지 빌드 및 실행하기

이미지 빌드

프로젝트 폴더에서 터미널을 열고 다음 명령어로 이미지를 빌드합니다:

docker build -t my-web-app .

빌드가 완료되면 생성된 이미지를 확인합니다:

docker images

컨테이너 실행

빌드한 이미지로 컨테이너를 실행합니다:

docker run -d -p 3000:80 --name my-app my-web-app

브라우저에서 localhost:3000에 접속하여 결과를 확인합니다. 직접 작성한 HTML 페이지가 Docker 컨테이너에서 실행되는 것을 볼 수 있습니다!

⚠️ 주의: 포트 충돌 시 다른 포트 번호(예: 3001, 3002)를 사용하세요.

마무리 및 다음 단계

축하합니다! Docker의 기본 개념부터 직접 애플리케이션을 컨테이너화하는 것까지 완주하셨습니다. 이제 어떤 환경에서든 동일하게 실행되는 애플리케이션을 만들 수 있는 기초를 갖추셨습니다.

💡 추가 학습 방향:
• Docker Compose로 다중 컨테이너 관리
• 볼륨(Volume)을 활용한 데이터 영속성
• Docker Hub에 이미지 배포
• Kubernetes 입문

Docker를 활용한 개발 경험은 어떠셨나요? 실습 중 궁금한 점이나 오류가 발생했다면 댓글로 공유해주세요. 함께 문제를 해결하고 더 나은 개발 환경을 만들어가요!

댓글 남기기