CHAPTER 1 / 8
개발환경에서 운영환경까지
Container의 첫 가치는 어디서나 같다는 구호보다 runtime dependency와 시작 명령을 versioned artifact로 묶는 데 있습니다.
이 개념이 필요해진 배경
Local에는 있지만 server에는 없는 library, 다른 OS package와 environment 값은 배포 실패를 만듭니다. Build recipe와 lockfile로 dependency를 고정하고 configuration과 secret은 image 밖에서 주입합니다.
Image만 같아도 CPU architecture, kernel capability, volume과 external service는 다를 수 있습니다. Reproducibility는 artifact digest와 실행 configuration, migration·data 조건까지 기록해야 합니다.
Container의 첫 가치는 어디서나 같다는 구호보다 runtime dependency와 시작 명령을 versioned artifact로 묶는 데 있습니다.
Build가 filesystem layer와 metadata를 content-addressed image로 만듭니다.
같은 digest를 staging에서 production configuration으로 실행하고 dependency·health contract를 비교합니다.
구체적인 시스템에서 따라가기
개발자 laptop에서는 한 process가 local database와 같은 network에 있고 test data도 작기 때문에 timeout, DNS, certificate와 resource limit 문제가 잘 드러나지 않습니다. 운영에서는 여러 instance, load balancer, secret store와 외부 service가 연결되고 부분 장애가 일상적으로 발생합니다. “내 컴퓨터에서 동작함”은 기능 가설의 시작이지 배포 가능성의 증거가 아닙니다.
환경 차이를 줄이려면 source뿐 아니라 dependency lock, runtime version, configuration schema와 build 절차를 version으로 묶어야 합니다. Secret과 환경별 endpoint는 image에 넣지 않고 배포 시 주입하되 누락되면 조용히 기본값으로 production을 향하지 않도록 시작 단계에서 실패시킵니다. 동일 artifact를 staging과 production에 승격하고 차이는 명시된 configuration으로만 남기는 편이 재현과 rollback에 유리합니다.
선택 기준과 실패 경계
Host kernel 공유, image vulnerability, secret 주입과 stateful data가 별도 과제가 됩니다.
피해야 할 오해: Local에서 image가 실행되면 production 동작도 동일하다는 생각은 틀립니다.
직접 검증하기
같은 digest를 staging에서 production configuration으로 실행하고 dependency·health contract를 비교합니다.
이 장의 공식 출처
본문의 기술 사실은 다음 1차 자료를 기준으로 검토했습니다. 도해와 비교는 이 자료를 바탕으로 저자가 재구성했습니다.
- Docker, 「Use Compose in Production」검토일 2026-08-28 · 적용 범위 Docker Compose 공식 문서