Docker 최종 수정일 2026-06-19 01:58 조회수 9
대시보드

Docker

기본 정보

  • 이름: Docker
  • 분류: 컨테이너(Container) 플랫폼
  • 개발사: Docker Inc.
  • 최초 공개: 2013년
  • 주요 용도: 애플리케이션 배포 및 실행 환경 관리
  • 관련 주제: #Docker #Container #DevOps #클라우드 #배포

개요

Docker는 애플리케이션과 실행 환경을 하나의 컨테이너(Container)로 패키징하여 어디서나 동일한 환경에서 실행할 수 있도록 하는 플랫폼이다.

개발 환경과 운영 환경의 차이로 발생하는 문제를 줄일 수 있으며, 마이크로서비스(MSA), CI/CD, 클라우드 환경에서 널리 활용된다.

현재 DevOps와 클라우드 네이티브 개발의 핵심 기술 중 하나로 자리 잡고 있다.


주요 특징

  • 운영체제 수준의 가상화
  • 빠른 실행 속도
  • 높은 이식성
  • 이미지 기반 배포
  • 버전 관리 가능
  • 마이크로서비스 아키텍처 지원
  • 클라우드 환경에 최적화

Docker 구조

Docker Client

↓

Docker Engine

↓

Docker Image

↓

Docker Container

↓

Application

기본 개념

Image

애플리케이션 실행에 필요한 파일과 설정을 포함한 템플릿이다.

예시

  • nginx
  • mysql
  • redis
  • ubuntu
  • node

Container

Image를 실행한 실제 인스턴스이다.

컨테이너는 독립된 실행 환경을 제공한다.


Docker Engine

Docker를 실행하고 관리하는 핵심 프로그램이다.


Docker Hub

공식 이미지 저장소이다.

수많은 공개 이미지를 다운로드하여 사용할 수 있다.


동작 과정

Dockerfile

↓

docker build

↓

Image 생성

↓

docker run

↓

Container 실행

Dockerfile

예제

FROM php:8.3-apache

WORKDIR /var/www/html

COPY . .

EXPOSE 80

Docker 이미지를 생성하기 위한 설정 파일이다.


대표 명령어

이미지 조회

docker images

컨테이너 조회

docker ps

전체 컨테이너 조회

docker ps -a

이미지 다운로드

docker pull nginx

컨테이너 실행

docker run -d -p 80:80 nginx

컨테이너 중지

docker stop container_id

컨테이너 삭제

docker rm container_id

이미지 삭제

docker rmi image_name

Docker Compose

여러 컨테이너를 동시에 관리할 수 있는 기능이다.

예제

version: "3"

services:

  nginx:

    image: nginx

  mysql:

    image: mysql

  php:

    image: php:8.3-fpm

실행

docker compose up -d

종료

docker compose down

Volume

데이터를 영구적으로 저장하기 위한 기능이다.

docker volume create mysql_data

컨테이너를 삭제해도 데이터는 유지된다.


Network

컨테이너 간 통신을 지원한다.

docker network create app_network

대표 이미지

  • nginx
  • apache
  • php
  • mysql
  • mariadb
  • postgres
  • redis
  • node
  • python
  • ubuntu

웹 서비스 구성 예시

Browser

↓

Nginx

↓

PHP-FPM

↓

MySQL

↓

Volume

PHP 기반 CMS나 웹서비스에서 많이 사용하는 구조이다.


Docker와 Kubernetes

Docker

↓

Container

↓

Kubernetes

↓

Container 관리

Auto Scaling

Load Balancing

Rolling Update

Docker는 컨테이너를 만들고, Kubernetes는 다수의 컨테이너를 관리한다.


Docker의 장점

  • 개발 환경 통일
  • 배포가 간편
  • 빠른 실행 속도
  • 리소스 효율성
  • 높은 이식성
  • CI/CD 구축에 적합
  • 클라우드 환경과 높은 호환성

Docker의 단점

  • 초기 학습 비용
  • 볼륨 관리 필요
  • 컨테이너 네트워크 이해 필요
  • 운영 환경에서 보안 설정 중요
  • GUI 기반 애플리케이션에는 제한이 있을 수 있음

주요 활용 분야

  • 웹 서비스
  • REST API
  • ERP
  • AI 서버
  • CI/CD
  • DevOps
  • MSA
  • 테스트 환경 구축
  • 개발 환경 통일

실무 메모

실무에서는 다음과 같은 방식이 권장된다.

  • Alpine 기반 이미지 사용
  • 멀티 스테이지 빌드 적용
  • .dockerignore 설정
  • 환경 변수는 .env 파일로 관리
  • 데이터는 Volume에 저장
  • 이미지 크기 최소화
  • Root 사용자 실행 지양
  • Health Check 설정
  • Docker Compose 활용
  • Kubernetes 연계 고려

Docker와 함께 사용하는 기술


대표 활용 사례

  • Laravel 개발 환경
  • Spring Boot 배포
  • Node.js API 서버
  • WordPress 운영
  • 그누보드 운영
  • GitLab Runner
  • Jenkins CI/CD
  • AI 모델 서버
  • Redis 캐시 서버

관련 문서


출처

  • Docker 공식 홈페이지
  • Docker 공식 문서
  • Docker Hub Documentation