도커란? 초보자를 위한 간단한 설명
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
- 초보 개발자: 컨테이너화 기초 개념 이해
- 중급 개발자: 도커 도구 활용법 학습
- DevOps: 인프라 자동화 및 배포 프로세스 최적화
- 난이도: 기초 수준 (예제 포함)
핵심 요약
- 도커(Docker)는 애플리케이션을 실행하기 위해 필요한 모든 환경을 포함한 가벼운 패키지(컨테이너)로 구성된 오픈소스 플랫폼입니다.
- Dockerfile은 이미지 빌드에 사용되는 명령어를 정의하는 파일로,
FROM
,WORKDIR
,CMD
등의 핵심 키워드를 포함합니다. - 도커의 주요 이점: 환경 일관성, 빠른 개발/배포, 가벼운 자원 사용, 포터블성, 컨테이너 관리(이미지/데몬/CLI).
섹션별 세부 요약
1. 도커의 정의 및 목적
- 컨테이너: 애플리케이션 실행에 필요한 코드, 라이브러리, 환경 변수 등을 포함한 가벼운 패키지입니다.
- 문제 해결: "내 머신에서는 작동하는데, 다른 환경에서는 안 돼?"와 같은 환경 불일치 문제를 해결합니다.
- 이점: 가상 머신 대비 메모리 효율성, 빠른 실행 시간, 일관된 배포 환경 제공.
2. 도커의 주요 구성 요소
- Docker Daemon (dockerd):
- CLI/API 명령 수신
- 이미지 빌드 및 컨테이너 관리
- 네트워크 및 볼륨 관리
- CLI (docker): Daemon과 REST API를 통해 상호작용.
- Dockerfile:
- 기반 이미지 정의 (FROM node:18
)
- 파일 복사 (COPY . .
) 및 의존성 설치 (RUN npm install
)
- 실행 명령 (CMD ["npm", "start"]
)
3. 이미지 및 컨테이너
- Docker 이미지: Dockerfile로 생성된 불변(immutable)의 읽기 전용 스냅샷입니다.
- 컨테이너 실행:
docker run my-app-image
명령어로 이미지를 기반으로 실행됩니다. - 이미지 공유: Docker Hub 등 레지스트리에 푸시/풀링 가능.
4. 사용자 권한 및 보안
- sudo 권한 필요: 기본적으로
sudo docker ps
명령어가 필요합니다. - 비루트 사용자 권한 부여:
- sudo usermod -aG docker ubuntu
명령어로 docker
그룹에 추가.
- 경고: docker
그룹은 루트 권한과 동일한 권한을 가지므로 주의가 필요합니다.
결론
- 실무 팁:
docker-compose
사용으로 복잡한 환경 설정을 간소화하고, 네트워크 및 볼륨 설정을 명시적으로 정의하세요. - 보안 관행:
docker
그룹에 사용자를 추가할 때 최소한의 권한만 부여하고, 필요 시 sudo 사용을 권장합니다. - 도커는 현대 개발 환경에서 필수 도구로, 마이크로서비스 개발 및 클라우드 배포에 핵심 역할을 합니다.