일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 배포
- web server
- Container
- 데이터베이스
- mysql
- HTTP
- 스프링
- 백엔드
- computer science
- 웹 서버
- 컨테이너
- spring cloud
- 스프링 시큐리티
- ORM
- JPA
- vm
- CI/CD
- 가상화
- spring batch
- CS
- 도커
- Spring Security
- virtualization
- 스프링 부트
- Spring
- Java
- spring boot
- 영속성 컨텍스트
- 자바
- 스프링 배치
- Today
- Total
목록DevOps/Docker Kubernetes (8)
개발 일기

정리하게된 계기이번에 nginx-react(front)-spring(back)을 도커를 통해 각각을 EC2에서 컨테이너로 작동시키고자했다. 그러나 프론트의 랜더링에 대한 이해가 부족했던 탓인지 Nginx의 이해도가 부족했던 탓인지 하면서 계속 80포트로 받아서 백엔드의 요청은 잘 받았지만 프론트로는 요청을 제대로 보내주지 못했다. 사실 이러한 단순한 문제로 2일을 잡아먹었다.그래서 어제 최근 학교에 선배 특강을 오셨던 쿠팡 백엔드 개발자 선배님께 따로 연락을 드렸고 도움을 받았다.선배님의 답변을 통해 다시 시도했고3개의 컨테이너가 각각 하나의 어플리케이션을 가지고 컴포즈를 통해 잘 동작하고 OAuth2.0 또한 아주 잘 작동했다 ㅎ그러나 이때 질문을 하던 과정에서 선배님께서 하나의 미션? 질문?을 던져주..

공부하게된 계기Docker를 사용하다보니 컨테이너 런타임(Container Runtime)이라는 단어를 종종 듣게 됐다. 도커 관련 개발 블로그를 봐면 종종 컨테이너 런타임이라는 용어를 당연하다는 듯이 쓰는 것을 봤다. 처음에 그냥 뭐 컨테이너가 돌아가고 있는 것이나 컨테이너가 돌아가기 위한 소프트웨어? 환경? 이런 것이라고 대강 이해하고 넘어 갔었는데 Kubernetes에 관한 영상을 봤는데도 쓰는데 뭔가 자세히 한번 짚고 넘어가야겠다는 생각이 들어 정리해보게 됐다.도커 아키텍처(Docker Architecture)전에도 한번 다뤘지만 다른 그림으로 도커의 아키텍처를 다시 보자.도커 클라이언트-서버 아키텍처우선은 이게 전에 봤던 것과 유사하다. 기본적으로 도커는 클라이언트-서버 구조로 동작하는데 우선..

쿠버네티스에 대해 공부하기 시작하면서 현업자의 인터뷰를 보면서 대강 뭐하는 애인지 정도 편하게 봤다. 이것을 발판 삼아 앞으로 잘 배워봐야겠다. 직접 써봤듯이 Git Actions와 같은 도구를 통해 CI/CD 배포를 자동화할 수 있었다. 그런데 이때 자동으로 배포한 것에서 감시까지 자동화 했을 때 에러가 난다면 조치는 누가할까? "사람"이 한다. 즉, 자동화는 품질이 사람에 의해 좌지우지가 되는 것이다.이때 배포, 감지에서 더 나아가 조치까지 자동화하겠다는 것이 "오케스트레이션"이란 개념이다.장애가 났어? 그럼 내가 살려줄게, 과부화 났어? 그럼 내가 알아서 Scale Out 해줄게 이러한 것이 추가된 것이다. 소프트웨어를 이미지로 만든 것이 ISO이다. 예를들어 Window OS를 설치하기 위해서는 ..

도커 파일 작성동기들과 주식 관련 솔루션 서비스를 제작하면서 스프링 부트로 백엔드를 맡아 하는 과정에 Dockerfile을 직접 작성해봤다.FROM에서 베이스 이미지를 OpenJDK 21로 지정했습니다. 제 Spring Boot가 Java21 버전을 사용하고있어서 선택했고 ARG는 Docker 빌드 시 사용할 변수(JAR_FILE)를 정의한다. 이 변수는 빌드된 JAR 파일의 경로를 가리키며 앞에서 정의한 ARG의 JAR_FILE 변수를 사용하여 JAR 파일을 이미지 안으로 'app.jar'라는 이름으로 복사해 온다..env 파일은 OPEN AI의 Assistant API를 사용할 때 필요한 OPENAI API 키를 저장해뒀다. build 시에 포함되지 않아 따로 COPY를 했다. 마지막으로 ENTRY..
dockerfile은 도커 이미지를 생성하기 위한 스크립트 파일로 여러 키워드를 사용하여 dockerfile을 작성하여 빌드를 보다 쉽게 수행할 수있다. Dockerfile InstructionFROMFrom 키워드를 사용하여 베이스가 되는 이미지를 지정한다.주로 OS 이미지나 런타임 이미지를 지정한다.ex) 스프링 프로젝트의 경우 자바 런타임 RUN이미지를 빌드할 때 사용하는 커맨드를 설정할 때 사용 ADD이미지에 호스트 파일이나 폴더를 추가하기 위해 사용만약 이미지에 복사하려는 디렉토리가 존재하지 않으면 docker가 자동 생성 COPY호스트 환경의 파일이나 폴더를 이미지 안으로 복사하기 위해 사용'ADD'와 동일하게 동작하지만 가장 확실한ㄴ 차이점은 URL을 지정하거나, 압축파일을 자동으로 풀..

ubuntu 이미지를 받아오자. Docker Hub에서 우분투를 검색하여 pull 명령어를 cmd창에서 실행시키면 된다.docker pull [설치할 이미지]ubuntu를 최신버전, 과거 버전(20.04) 두가지를 다운 받았고docker images를 통해 현재 로컬에 받아진 이미지를 확인하니 두개의 ubuntu가 받아진 것을 확인할 수 있다.아직 pull만 했기 때문에 현재 실행 중인 도커 컨테이너의 목록을 조회하는 docker ps를 통해 확인했을때 ubuntu가 실행중인 상태는 아니였다. 이제 필요없는 이미지들을 삭제하려 하는데 docker rmi [REPOSITORY명/IMAGE ID] 명령어를 통해 삭제할 수 있다.특히 IMAGE ID를 통해 삭제할때 위의 예시로 7b 이렇게 앞부분 까지만 쳐..

도커(Docker)란?도커는 전 게시글에서 다룬 가상화 방법 중 컨테이너(Container) 기술을 기반으로 한 일종의 가상화 플랫폼이다.부두에서 화물 컨테이너를 체계적으로 관리하는 Docker에서 따온 것으로 소프트웨어 컨테이너를 효율적으로 관리할 수 있도록 설계된 강력한 도구이다. 이를 통해 사용자는 소프트웨어 이미지를 컨테이너로 변환하고, 생성된 컨테이너를 운영하며, 컨테이너를 이미지로 다시 변환하는 과정 등을 간편하게 수행할 수 있다. 즉, 컨테이너를 관리하기 위해서 도커와 같은 툴 등이 쓰이는 것이다.도커 컨테이너는 가상화된 공간을 생성하기 위해 리눅스 자체 기능인 chroot, 네임스페이스(namespace), cgroup을 사용함으로써 프로세스 단위의 격리 환경을 만들기 때문에 성능 손실이 ..

메타 코딩님 강의와 도커 공식 다큐먼트를 참고했습니다. 이전 프로젝트에서 나는 EC2에 코드를 git clone해서 직접 관련 의존성 MYSQL 등 하나하나 다 설치하는 식으로 배포를 했다. 그러나 이것은 너무나 무식한 배포 방식 이였다. 그래서 Docker와 Kubernetes를 도입해보기 위해 우선 도커의 기본이 되는 가상화의 개념부터 차근차근 정리해 보겠다. 가상화(Virtualization) 개념가상화 기술이란 물리적인 하드웨어 자원(CPU,Memory 등)을 논리적인(추상화) 리소스로 제공하기 위한 기술이다. 하드웨어에서 물리적인 개념을 추상화하여 숨기고, 사용자에게는 논리적인(추상적인) 개념으로 리소스를 제공하여 사용자가 실제 컴퓨터와 같이 작동하는 것처럼 보이도록 한다. 이러한 가상화 기술은..