DevOps12 Docker Registry와 Docker 실행 구조 (Harbor, Desktop, Engine, WSL2) 최근 Docker에 대해 학습하며 Harbor를 이용해 Private Registry 서버를 구축해보았다. 이 과정에서 Docker Registry 개념과 Docker Hub, Docker Desktop에 대해 궁금증이 생겼고, Docker Desktop 없이 Windows 환경에서 어떻게 Docker Engine을 실행하는지 정리하게 되었다.Docker Harbor에 아주 간단한 PR로 올렸다!Docker Registry란?Docker Registry는 Docker Image를 저장하고 배포하는 저장소 서버이다.Docker는 컨테이너 실행 시 이미지를 Pull 하거나 Push 하는데, 이때 Registry 서버를 이용한다.Docker HubDocker Hub는 Docker에서 공식 제공하는 퍼블릭 Re.. 2026. 1. 24. #2 Loki와 Promtail을 이용해 Grafana에서 로그 데이터 시각화하기 저번 글(https://bangbaeking.tistory.com/166)에서는 Prometheus와 Grafana를 활용해 메트릭 데이터 모니터링 환경을 구축하는 방법에 대해 알아보았다.이번 글에서는 Loki와 Promtail을 이용해 로그(Log) 데이터 모니터링 환경을 구축해보려고 한다.로그(Log)란?로그는 시스템이나 애플리케이션이 동작하면서 발생하는 이벤트 기록이다. 예를 들어 서버 시작·종료, 오류 메시지, 사용자 요청, 디버깅 정보 등이 모두 로그에 해당한다.이러한 로그는 장애 원인 분석, 성능 진단, 보안 감사 등 다양한 목적에 활용되며, 운영 환경에서 빠르고 체계적으로 수집·분석할 수 있는 시스템이 필수적이다.Loki란?Loki는 Grafana Labs에서 개발한 로그 수집,저장,조회 시.. 2025. 10. 13. #1 Prometheus + Grafana 모니터링 구축하기 저번글(https://bangbaeking.tistory.com/165)에서 모니터링과 옵저버빌리티에 대해 알아봤다.옵저버빌리티가 “왜 그런 일이 일어났는가?”를 추론하는 과정이라면, 모니터링은 그 신호를 지속 관측하고 경보/대시보드로 운영을 돕는 방식이다.보통 Metrics / Logs / Traces 세 축을 함께 다루지만, 이번글에서는 모니터링과 Metric에 대해 알아보고 실습을 진행해보려고한다.메트릭 수집 모델메트릭 수집 방식에는 Push-based Collector 와 Pull-based Collector가 있다.Push-based Collector장점방화벽/NAT 환경에서 바깥으로만 전송하면 되므로 네트워크 제약 대응에 유리각 타겟에서 원하는 대로 메트릭 세밀하게 조절수집 주기나 데이터 형식.. 2025. 8. 31. Monitoring(모니터링) vs Observability(옵저버빌리티) 서비스를 운영할때 단순히 서비스가 동작중인지 확인하는것을 넘어, 문제가 발생했을때 왜 해당 문제가 발생했는지 파악해 빠르게 대응하는것은 중요하다.이때 핵심이 되는 개념이 바로 모니터링(Monitoring)과 옵저버빌리티(Observability) 이다.모니터링(Monitoring)모니터링이란 무엇이 언제 잘못되었는지 확인하는 도구이다. (What 과 When)정의모니터링은 시스템에서 발생하는 다양한 지표를 수집하고 감시해서 이상 징후를 빠르게 탐지하고 알림을 전송하는 프로세스이다.예시갑작스러운 트래픽 증가 시, CPU와 RAM 등의 리소스 부족으로 인해 장애를 사전에 감지한다장애 발생 시, 이를 빠르게 인지하여 평균 탐지 시간(MTTD)과 복구시간(MTTR)을 최소화한다.주요 목적가용성 확인(Availa.. 2025. 7. 28. [Docker] DinD(Docker in Docker) 와 DooD(Docker out of Docker) 프로젝트를 진행하며 EC2에 Jenkins를 배포하여 CI/CD 파이프라인을 구축하였다. 이 과정에서 컨테이너 환경에서 실행 중인 Jenkins에서 docker-compose: not found 오류가 발생하는 문제가 있었고, 이를 해결하는 과정에서 DinD(Docker-in-Docker)와 DooD(Docker-out-of-Docker) 방식에 대해 학습하게 되었다. CI/CD 파이프라인 흐름개발자가 GitLab에 코드를 push한다.GitLab에 설정된 webhook을 통해 push 이벤트가 Jenkins로 전달된다.Jenkins는 GitLab의 최신 코드를 가져와 테스트 및 빌드를 수행한다.빌드 과정에서 docker-compose up -d --build 명령을 실행하여 새로운 코드 기반으로 컨테이.. 2025. 2. 2. [Docker] Container의 불변성과 Volume, Bind Mount 결론Docker 컨테이너는 이미지 기반으로 운영되며 불변성을 유지하는 구조를 갖는다.이는 환경의 일관성을 유지하고 배포 및 롤백을 용이하게 하며, 버전 관리를 최적화하는 등의 장점을 제공한다.그러나 이러한 불변성으로 인해 컨테이너 내부의 데이터는 기본적으로 휘발성이며, 컨테이너가 삭제되면 데이터도 함께 사라지는 문제가 발생할 수 있다. 이를 해결하기 위해 Docker Volume을 사용하면 컨테이너의 수명과 관계없이 데이터를 지속적으로 유지할 수 있다. 또한, 바인드 마운트를 활용하면 호스트 시스템의 특정 디렉터리를 컨테이너와 공유하여 영구적인 데이터 저장이 가능하다. 따라서 컨테이너의 불변성을 유지하면서도 데이터를 보호하고 지속적으로 활용하기 위해서는 Docker Volume과 바인드 마운트를 잘 활용.. 2025. 1. 29. [AWS] EC2 & RDS 시작하기 리전 설정하기우측 상단에서 리전을 선택해준다.AWS 콘솔에서 EC2를 선택하고 인스턴스 시작을 누른다.익숙한 Ubuntu 를 선택했다. 키 페어키 페어란 EC2 인스턴스에 **안전하게 접속하기 위한 암호 키의 쌍(SSH 키)**이다.AWS에 저장되는 공개 키와 사용자 환경에 저장되는 개인 키, 두 개의 키로 구성된다.인스턴스에 연결된 공개 키와 사용자의 개인 키 조합이 일치하는 경우에만 인스턴스에 접속할 수 있다.보안 그룹보안 그룹은 AWS에서 기본적으로 사용되는 네트워크 보안 기술이다.보안 그룹을 통해 EC2 Instance로 들어오거나(Inbound) 나가는(Outbound) 트래픽들을 직접 설정하여 제어할 수 있다.추후에 설정을 해주자.탄력적 IP 설정AWS의 EC2는 재실행 될 때마다 public.. 2024. 10. 24. [Docker] docker compose - redis 연결 불가 오류 저번글에서 docker-compose를 이용해서 spring+mysql 컨테이너를 만들었었다. 이번에는 redis를 세션 저장소로 이용하기위해 docker-compose에 redis관련 설정을 추가해줬다.my-redis: image: redis:latest restart: always ports: - 6379:6379 networks: - my-network 위 코드를 docker-compose 파일에 추가해줬고 spring: session: store-type: redis yml파일에 해당 코드를 추가한뒤 docker-compose 실행했고 잘 실행되었다. 다음날 학원에 가서 학원 컴퓨터에 집에서 작성했던 코드를 받아서 컨테이너를 다시 만들었는데 redis 연결이 안되는 오류.. 2024. 2. 27. [Docker] docker compose로 Spring + MySQL 배포 환경 만들기 docker compose를 통해 하나의 네트워크에 Spring, MySQL 컨테이너를 띄워서 실행시켜보자 일단 spring, mysql의 Dockerfile을 작성하고 docker-compose.yml을 작성해 spring과 mysql을 도커로 띄워서 실행시켜 보았다. 코드는 얼마전 스프링 시큐리티 실습을 할때 사용했던 프로젝트를 사용했다. 이 과정에서 몇가지 오류가 발생했고 이를 정리하고자 한다. 1. ./gradlew clean build 오류 - (1) 2. ./gradlew clean build 오류 - (2) 3. 3306 포트 사용중으로 인한 오류 4. db폴더에 있는 store 폴더에 의한 오류 1. ./gradlew clean build 오류 - (1) RUN ./gradlew clean.. 2024. 2. 22. 이전 1 2 다음