컨테이너(Docker)와 CI/CD는 강력하게 함께 작동합니다 — 컨테이너는 일관된 build/test 환경과 불변 deploy artifact(이미지)를 제공하고, CI/CD pipeline은 그러한 이미지를 build, 테스트, deploy합니다. 컨테이너는 전달 프로세스의 핵심 일관성 문제를 해결합니다.
일관된 build/test 환경으로서의 컨테이너
→ pipeline job을 컨테이너 안에서 실행 → build/test 환경이 일관되고
재현 가능 (로컬과 CI에서 매번 동일한 도구/버전)
→ "내 컴퓨터에선 되는데" / "CI에선 되는데 로컬에선 안 됨" 환경 차이 없음
→ 정확한 환경을 정의하기 쉬움 (필요한 도구를 가진 컨테이너 이미지)
deploy artifact로서의 컨테이너 이미지
pipeline이 deploy 가능한 artifact로 컨테이너 IMAGE를 BUILD:
build → docker build → IMAGE → REGISTRY에 push → 이미지 deploy
✓ 이미지는 불변이고 자기 완결적 (앱 + 의존성 + 런타임)
✓ 테스트한 것이 deploy하는 것 (환경들을 통해 동일한 이미지)
✓ 어떤 환경에서도 동일하게 실행 (dev, staging, prod, 어떤 클라우드든)
→ 컨테이너는 이상적인 "build once, deploy everywhere" artifact.
