Docker 개념과 설치 방법

1. 개요 및 정의

Docker는 Go 언어로 작성된 리눅스 컨테이너 기반 오픈소스 플랫폼으로,
애플리케이션을 컨테이너(Container)라는 독립된 환경에서 실행하도록 도와줍니다.

즉, “내 PC에서 되는데 서버에선 안 돼요” 문제를 해결해주는 기술입니다.

Docker는 2013년에 등장하여 현재는 개발 환경, 테스트, 배포 자동화의 핵심 기술로 자리 잡았습니다.

2. 개념의 필요성

“개발 서버에서는 잘 돌아가는데, 운영 서버에서는 에러가 나요.”

이 문제의 원인은 환경 차이(Environment Gap)입니다.
운영체제 버전, 라이브러리, 설정 파일 등 미묘한 차이가 문제를 일으키죠.

Docker는 이 문제를 ‘컨테이너’로 해결합니다.

  • 하나의 앱과 필요한 실행 환경을 이미지(Image)로 묶어
  • 어디서든 같은 방식으로 실행되게 합니다.

3. 핵심 개념 구분

구분 설명 대표 기술
가상머신(VM) OS 전체를 가상화 (무겁고 느림) VMware, VirtualBox
컨테이너(Container) OS 커널 공유, 프로세스 단위 격리 (가볍고 빠름) Docker, Podman

VM vs Container 구조 비교


VM 구조
[App] → [Guest OS] → [Hypervisor] → [Host OS]

Container 구조
[App] → [Docker Engine] → [Host OS]
  

주의: 컨테이너는 커널을 공유하기 때문에 완전한 보안 격리는 아닙니다.
(보안이 중요한 환경에서는 VM 병행 사용을 고려하세요.)

4. Docker의 핵심 구성요소

  1. Docker Client (CLI) – 명령을 입력하는 인터페이스 (docker run, docker build 등)
  2. Docker Daemon (Server / Engine) – 실제로 컨테이너를 만들고 실행하는 백엔드 서비스
  3. Docker Hub / Registry – 컨테이너 이미지를 저장하고 공유하는 저장소
    (기본값: hub.docker.com)

5. Docker 설치 방법

1. Linux (Ubuntu 기준)


sudo apt update
sudo apt install docker.io -y
sudo systemctl enable docker
sudo systemctl start docker
docker --version
  

결과 예시: Docker version 27.0.3, build xxxxx

Tip: sudo 없이 실행하려면 현재 사용자를 docker 그룹에 추가하세요.

sudo usermod -aG docker $USER

2. Windows / macOS

Docker Desktop을 설치하면 됩니다.

👉 공식 다운로드 페이지

docker run hello-world

Hello from Docker! 메시지가 출력되면 성공입니다.

6. 실무 활용 예시

기본 실행 예시

docker run -it ubuntu bash
  • -it: 대화형 터미널 연결
  • ubuntu: 이미지 이름
  • bash: 실행할 명령

실행 중 컨테이너 목록 보기

docker ps

컨테이너 중지 및 삭제


docker stop <container_id>
docker rm <container_id>
  

7. 마무리 및 정리

Docker는 애플리케이션을 빠르고 일관되게 배포하기 위한 컨테이너 기술입니다.
가상머신보다 가볍고 효율적이며, DevOps 환경에서 CI/CD의 핵심 요소로 자리 잡았습니다.

  • 개발 환경 통일 → “내 환경에서는 잘 돼요” 문제 제거
  • CI/CD 자동화 파이프라인과 궁합이 뛰어남
  • 운영 환경 이식성 극대화

8. 전 이걸로 그냥 끝냈습니다.

Ubuntu는 아래처럼 한방으로 끝내보았습니다.

for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done &&
sudo apt-get update -y &&
sudo apt-get install -y ca-certificates curl &&
sudo install -m 0755 -d /etc/apt/keyrings &&
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc &&
sudo chmod a+r /etc/apt/keyrings/docker.asc &&
echo \
“deb [arch=$(dpkg –print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo “${UBUNTU_CODENAME:-$VERSION_CODENAME}”) stable” | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null &&
sudo apt-get update -y &&
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin &&
sudo groupadd docker &&
sudo usermod -aG docker $USER &&
newgrp docker &&
sudo apt-get install -y nano