Docker 기초 - 설치 및 개념
Docker 기초 - 설치 및 개념
Docker는 애플리케이션을 컨테이너로 패키징하여 어디서든 동일하게 실행할 수 있게 해주는 플랫폼입니다. “내 컴퓨터에서는 되는데?”라는 문제를 근본적으로 해결하며, 현대 소프트웨어 개발과 배포의 표준이 되었습니다.
Docker 개념
Immutable Infrastructure
Docker는 불변 인프라(Immutable Infrastructure) 위에서 동작합니다:
- 이미지만 올려서 서버 증설 가능
- 한 OS 내에 애플리케이션들을 격리
- 환경에 상관없이 동일한 실행 환경 보장
Docker vs 가상 머신 (VM)
Docker 컨테이너와 VM은 모두 격리 환경을 제공하지만 동작 방식이 다릅니다:
| 비교 | Docker Container | Virtual Machine |
|---|---|---|
| 가상화 수준 | OS 레벨 (커널 공유) | 하드웨어 레벨 |
| 시작 시간 | 수 초 | 수 분 |
| 이미지 크기 | MB 단위 | GB 단위 |
| 성능 | 네이티브에 가까움 | 오버헤드 있음 |
| 격리 수준 | 프로세스 격리 | 완전한 OS 격리 |
VM은 각각 별도의 게스트 OS를 포함하지만, Docker 컨테이너는 호스트 OS의 커널을 공유합니다. 이 차이로 인해 Docker가 훨씬 가볍고 빠릅니다.
주요 장점
- 환경 일관성: 개발, 테스트, 프로덕션 환경에서 동일하게 동작
- 격리: 각 컨테이너는 독립적으로 실행
- 경량화: VM보다 가볍고 빠름
- 확장성: 필요에 따라 쉽게 스케일 아웃 가능
핵심 용어
- Image(이미지): 컨테이너를 생성하기 위한 읽기 전용 템플릿. Dockerfile로 정의됩니다.
- Container(컨테이너): 이미지의 실행 인스턴스. 이미지를 기반으로 실제로 동작하는 프로세스입니다.
- Dockerfile: 이미지를 빌드하기 위한 명령어 모음. 기본 이미지, 파일 복사, 실행 명령 등을 정의합니다.
- Registry: 이미지를 저장하고 배포하는 저장소 (Docker Hub, ECR 등)
Docker 설치
Mac에서 설치
# Docker 설치
brew cask install docker
# docker-compose 설치 (개발 환경 구성용)
brew install docker-compose
Mac에서는 Docker Desktop을 설치하면 Docker Engine, CLI, Docker Compose가 모두 포함됩니다. 설치 후 상단 메뉴바에서 Docker 아이콘을 클릭하여 실행 상태를 확인할 수 있습니다.
Linux (Amazon Linux/CentOS)에서 설치
AWS EC2 등에서 Docker를 설치하고 시스템 서비스로 등록합니다:
# Docker 설치
sudo yum install docker -y
# Docker 서비스 시작
sudo systemctl start docker
# 재부팅 시 자동 시작
sudo systemctl enable docker
Ubuntu에서 설치
# 필수 패키지 설치
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
# Docker 공식 GPG 키 추가
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Docker 설치
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Docker 권한 설정
sudo 없이 Docker를 실행하려면:
# docker 그룹 생성 및 사용자 추가
sudo groupadd docker && sudo usermod -aG docker $USER
설정 후 로그아웃했다가 다시 로그인하면 적용됩니다.
설치 확인
# Docker 버전 확인
docker --version
# Docker 정보 확인
docker info
# 테스트 컨테이너 실행
docker run hello-world
hello-world 이미지가 정상적으로 실행되면 Docker가 올바르게 설치된 것입니다. Docker는 로컬에 이미지가 없으면 자동으로 Docker Hub에서 다운로드합니다.
자주 사용하는 기본 명령어
# 실행 중인 컨테이너 목록
docker ps
# 모든 컨테이너 목록 (중지된 것 포함)
docker ps -a
# 로컬 이미지 목록
docker images
# 컨테이너 중지/시작/삭제
docker stop <container-name>
docker start <container-name>
docker rm <container-name>
# 컨테이너 로그 확인
docker logs <container-name>
docker logs -f <container-name> # 실시간 로그
# 실행 중인 컨테이너에 접속
docker exec -it <container-name> /bin/bash
다음 단계
Docker 설치 후에는 다음 단계로 진행할 수 있습니다:
- Docker 이미지 파일 만들기 (Dockerfile 작성)
- 이미지 파일 실행하기
- AWS ECS에 Docker 이미지 등록하기
자세한 내용은 AWS Docker 기초 문서를 참고하세요.
Comments