DevOps8 [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. [Docker] 도커 개념, 기본 명령어 정리 도커란?도커, 컨테이너,쿠버네티스가 무엇일까? 도커는 컨테이너를 관리하기 위한 도구로 일종의 프로그램이다.컨테이너를 통해 한대의 서버에 여러개의 소프트웨어를 안전하고 효율적으로 운영할 수 있다.쿠버네티스는 서버가 여러 대 있는 환경에서 각각의 서버의 도커에게 대신 지시를 해주는 오케스트레이션 도구이다.vm과의 차이vm이란?VM(virtual machine)의 정의는 컴퓨팅 환경을 소프트웨어로 구현한 것으로 즉 컴퓨터 시스템을 에뮬레이션(가상현실화)하는 소프트웨어라고 하며, 가상머신상에서 운영 체제나 응용 프로그램을 설치 및 실행할 수 있다고 한다. VM과 도커의 공통점Docker와 Virtual Machine은 기본 하드웨어에서 격리된 환경 내에 애플리케이션을 배치하여 실행한다. VM과 도커의 차이점D.. 2024. 2. 19. [네이버 클라우드] SpringBoot + MySQL 서버 생성, 배포하기 저번에 네이버클라우드에 우분투 서버를 생성했다.https://bangbaeking.tistory.com/82 Compu" data-og-host="bangbaeking.tistory.com" data-og-source-url="https://bangbaeking.tistory.com/82" data-og-url="https://bangbaeking.tistory.com/82" data-og-image="https://scrap.kakaocdn.net/dn/e3JPs/hyUE4UktNf/ueEEzMEgL9HqN47knB8Qx0/img.png?width=529&height=186&face=0_0_529_186,https://scrap.kakaocdn.net/dn/hhFoY/hyUE7pYTY8/Kxk37opW.. 2023. 12. 1. [네이버 클라우드] 네이버 클라우드로 리눅스 서버 열기 네이버클라우드에 회원가입을 하고 결제수단을 등록하면 현재 10만원 이용권을 준다. 결제수단을 등록한뒤 우측 상단의 console을 눌러 시작하자. 좌측에서 Platform을 VPC로 설정해주고 Services > Compute > Server에 들어간다. 그리고 서버 생성을 눌러준다. 신규 콘솔 화면을 누르고 서버생성을 시작하자. 우분투 XEN을 선택하자 XEN과 KVM의 차이점?? VPC와 Subnet을 생성하자. VPC와 Subnet이란 서버스팩을 Standard, 공인 IP는 새로운 공인 IP 할당을 선택해준다. 인증키를 만들어주자 해당 인증키는 추후에 관리자 비밀번호가 필요할때 사용한다. id는 root, pw는 서버관리 및 설정변경 -> 관리자 비밀번호 확인 에서 아까 만든 인증키인 ncppai.. 2023. 11. 1. 이전 1 다음