컨테이너란 무엇인가
컨테이너는 애플리케이션과 그 의존성을 패키징하는 기술입니다. 40년간 배포 기술의 변화를 지켜본 저로서는 컨테이너가 소프트웨어 배포를 혁신했다고 확신합니다. '내 컴퓨터에서는 되는데?'라는 문제를 해결합니다. 개발, 테스트, 프로덕션 환경을 일관되게 유지합니다. Docker가 컨테이너를 대중화했습니다.
Docker의 핵심 개념
이미지(Image)는 컨테이너의 템플릿입니다. 읽기 전용이며, 레이어로 구성됩니다. 컨테이너(Container)는 이미지의 실행 인스턴스입니다. 격리된 환경에서 프로세스가 실행됩니다. Dockerfile은 이미지를 만드는 스크립트입니다. 베이스 이미지, 파일 복사, 명령어 실행 등을 정의합니다. Docker Hub는 이미지 레지스트리입니다.
기본 Docker 명령어
docker pull: 이미지를 다운로드합니다. docker run: 컨테이너를 실행합니다. docker ps: 실행 중인 컨테이너를 조회합니다. docker stop: 컨테이너를 중지합니다. docker build: Dockerfile로 이미지를 빌드합니다. docker-compose: 여러 컨테이너를 정의하고 함께 실행합니다. 개발 환경에서 데이터베이스, 캐시 등을 쉽게 구성합니다.
Docker 모범 사례
이미지를 작게 유지합니다. Alpine 같은 경량 베이스 이미지를 사용합니다. 멀티스테이지 빌드로 빌드 도구를 최종 이미지에서 제외합니다. .dockerignore로 불필요한 파일을 제외합니다. 루트 사용자 대신 일반 사용자로 실행합니다. 환경 변수로 설정을 주입합니다. 로그는 stdout으로 출력합니다.
컨테이너 오케스트레이션
프로덕션에서는 Kubernetes(K8s)로 컨테이너를 관리합니다. 자동 스케일링, 롤링 업데이트, 자가 치유(self-healing)를 제공합니다. Docker Swarm은 더 간단한 대안입니다. 클라우드 서비스(ECS, Cloud Run, Azure Container Instances)도 있습니다. 컨테이너 기술은 현대 DevOps의 핵심이므로 반드시 익히세요.
댓글
0