일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스프링
- 백엔드
- virtualization
- 배포
- 데이터베이스
- CS
- spring batch
- spring cloud
- Container
- 웹 서버
- 컨테이너
- 도커
- HTTP
- Spring
- vm
- JPA
- 자바
- 가상화
- 스프링 시큐리티
- 영속성 컨텍스트
- mysql
- Spring Security
- 스프링 부트
- Java
- computer science
- 스프링 배치
- web server
- ORM
- spring boot
- CI/CD
- Today
- Total
목록가상화 (5)
개발 일기

도커 파일 작성동기들과 주식 관련 솔루션 서비스를 제작하면서 스프링 부트로 백엔드를 맡아 하는 과정에 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 등)을 논리적인(추상화) 리소스로 제공하기 위한 기술이다. 하드웨어에서 물리적인 개념을 추상화하여 숨기고, 사용자에게는 논리적인(추상적인) 개념으로 리소스를 제공하여 사용자가 실제 컴퓨터와 같이 작동하는 것처럼 보이도록 한다. 이러한 가상화 기술은..