Docker
Docker
컨테이너 기술을 기반으로 애플리케이션을 개발, 배포, 실행하기 위한 오픈소스 플랫폼으로, Dockerfile로 이미지를 정의하고 Docker Engine으로 컨테이너를 실행하며 Docker Hub를 통해 이미지를 공유하는 생태계를 제공하여 Build, Ship, Run 워크플로우 실현
구성요소: Docker Engine(컨테이너 생성/실행 핵심 데몬 dockerd), Docker CLI(사용자 명령어 인터페이스 docker), Docker Image(컨테이너 실행을 위한 불변 템플릿), Docker Container(이미지의 실행 인스턴스), Dockerfile(이미지 빌드 명세 파일), Docker Compose(멀티 컨테이너 앱 정의/실행), Docker Registry(이미지 저장소 Docker Hub)
Dockerfile 주요 명령어: FROM(베이스 이미지 지정), WORKDIR(작업 디렉토리 설정), COPY/ADD(파일 복사), RUN(빌드 시 명령 실행), ENV(환경변수 설정), EXPOSE(포트 노출 선언), CMD/ENTRYPOINT(실행 시 명령), VOLUME(볼륨 마운트 포인트)
주요 명령어: docker build(Dockerfile로 이미지 빌드), docker run(컨테이너 실행), docker ps(실행 중 컨테이너 목록), docker images(로컬 이미지 목록), docker pull/push(이미지 다운로드/업로드), docker exec(실행 중 컨테이너에 명령 실행), docker logs(컨테이너 로그 조회), docker compose up(Compose 앱 시작)
이미지 최적화: 경량 베이스(alpine/distroless/slim), 멀티스테이지 빌드(빌드와 실행 환경 분리), 레이어 캐싱(자주 변하지 않는 레이어 먼저), .dockerignore 활용(불필요 파일 제거), 종속성 최소화(필요 패키지만)
아키텍처: Docker CLI(REST API 통신)→Docker Engine dockerd(Image Mgmt/Container Mgmt/Network/Volume)→containerd(컨테이너 라이프사이클 관리)→runc(OCI Runtime/실제 컨테이너 생성/실행), Docker Registry(Docker Hub/ECR/GCR/Harbor - 이미지 저장/배포)
비교: Docker(단일 호스트/수동 관리/단순 네트워킹/개발/단순 배포) vs Kubernetes(클러스터 오케스트레이션/자동 스케일링/복잡 네트워킹/프로덕션/대규모)
연관: 컨테이너, 컨테이너 이미지, Kubernetes, CI/CD