피드로 돌아가기
Dev.toDevOps
원문 읽기
Docker Socket Mounting을 통한 Jenkins 기반 CI 배포 아티팩트 자동화
30-Day Cloud & DevOps Challenge: Day 10 — Docker in CI
AI 요약
Context
코드 빌드 및 의존성 설치만 가능했던 기존 파이프라인의 한계로 인해 프로덕션 배포 가능한 컨테이너 이미지 생성 단계가 결여된 상태임. Jenkins가 컨테이너 환경에서 동작함에 따라 호스트 Docker Daemon에 접근하지 못하는 권한 및 통신 제약 발생.
Technical Solution
- 호스트의
/var/run/docker.sock을 Jenkins 컨테이너에 마운트하여 Docker-out-of-Docker(DooD) 구조 설계 - Jenkins 프로세스의 root 권한 부여를 통한 Docker Daemon 통신 시 Permission Denied 문제 해결
- 컨테이너 내부에 Docker CLI를 설치하여 Pipeline 스크립트 내
docker build명령어 실행 환경 구축 - Backend(Node.js) 및 Frontend(Nginx) 각각의 Dockerfile을 통한 환경 격리 및 이미지 최적화
- Build Context 경로 지정을 통한 소스 코드 및 빌드 결과물의 정확한 이미지 레이어 주입
latest태그를 활용한 최신 빌드 아티팩트의 식별 및 배포 준비 완료 상태 확보
실천 포인트
- Jenkins 컨테이너 설정 시 `/var/run/docker.sock` 마운트 여부 확인 - 컨테이너 내 Docker CLI 설치 및 `docker --version`을 통한 정상 작동 검증 - Dockerfile 내 `COPY` 명령 사용 시 Build Context 경로와 파일 위치의 일치 여부 점검 - root 권한 부여에 따른 보안 리스크 검토 및 최소 권한 원칙 적용 고려