![[Docker] 이미지와 컨테이너](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFFsOF%2FbtsJsfzvm4c%2FiDVKheDalkCqYmKwhdHtnk%2Fimg.webp)
이 글은 인프런의 개발자를 위한 쉬운도커(데브위키) 강의를 수강하고 개인적으로 정리하는 글임을 알립니다.도커 이미지이미지는 애플리케이션을 실행하기 위한 모든 파일, 라이브러리, 설정을 미리 포함한 패키지라고 생각하면 된다. 이미지는 변하지 않는 읽기 전용 파일 시스템으로 구성되며, 이를 기반으로 컨테이너를 생성하고 실행한다.도커의 이미지는 애플리케이션과 그 실행에 필요한 모든 요소를 포함한 애플리케이션 실행 패키지이다.이미지는 읽기 전용으로 유지되며, 컨테이너를 생성할 때 이 이미지를 기반으로 애플리케이션을 실행한다.여러 계층으로 구성되어 있어 효율적으로 관리할 수 있으며, 이미지를 공유하고 재사용할 수 있다.애플리케이션 패키지이미지에는 특정 애플리케이션을 실행하기 위해 필요한 모든 것이 들어 있다. 예..
![[Docker] 하이퍼바이저 및 컨테이너 가상화와 도커 아키텍쳐](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxUAj0%2FbtsJshxaJ34%2F94A6H2u0EGnBQyWeXX8kn1%2Fimg.webp)
이 글은 인프런의 개발자를 위한 쉬운도커(데브위키) 강의를 수강하고 개인적으로 정리하는 글임을 알립니다.하이퍼바이저 가상화가상 머신(Virtual Machine)두 개의 가상 머신이 물리적 서버에서 실행되고 있으며, 각각 리눅스(Linux)와 맥(MacOS) 운영체제를 사용하는 게스트 OS(Guest OS)를 가지고 있다.가상 머신은 각기 독립적인 프로세스를 실행하고, 리소스(예: CPU, 메모리, 저장공간)를 할당받아 운영된다.각 게스트 OS는 자체 커널(Kernel)을 가지고 있으며, 사용자 프로세스는 이 커널을 통해 시스템 자원에 접근하게 된다. 하이퍼바이저(Hypervisor)가상 머신들을 관리하는 소프트웨어 계층이다.하이퍼바이저는 물리적 서버 자원을 추상화하여 각 가상 머신에 필요한 리소스를 할..
![[AWS] Mac 에서 터미널로 EC2 접속](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxxD5q%2FbtsJpg0bBCA%2FFJ15iQu61CFvs0QPNppur1%2Fimg.png)
기본적인 접속 방법먼저 pem 파일의 위치로 이동해야한다. 이후 해당 파일에 권한을 부여한다.600이 아니라 400으로 권한을 줘도 상관없다.400 : 읽기 권한600 : 읽기 + 쓰기 권한 이제 접속하는일만 남았다.EC2의 퍼블릭 아이피는 AWS에서 확인할 수 있다.ssh -i 키페어이름.pem ec2-user@EC2퍼블릭아이피 ssh -i 키페어이름.pem ubuntu@EC2퍼블릭아이피 차이점은 Amazon Linux, CentOS의 경우 호스트 이름을 ec2-user이고, Ubuntu의 경우 호스트이름이 ubuntu이다.https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/managing-users.html Amazon EC2 Linux 인스턴스에서..
![[Docker] Docker를 이용한 AWS EC2에 배포](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp2yzF%2FbtsJg78sbch%2FEsskCSNKxPfc9TUgVxF4h1%2Fimg.webp)
서버 환경 : Ubuntu 24.04 LTS (GNU/Linux 6.8.0-1012-aws x86_64)MySQL : 8.0.32스프링부트 : 3.3.3Redis : latest(24.8.26 기준) EC2에 Docker, Docker Compose 설치sudo apt-get update && \sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common && \curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - && \sudo apt-key fingerprint 0EBFCD88 && \sudo add-apt-rep..
![[Docker] Spring Boot 프로젝트를 Docker 이미지로 만들기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbildfW%2FbtsJf9rxiyR%2FmziByYQTYe7PRQ6v19Fv3k%2Fimg.webp)
DockerFile 작성 생성한 도커파일에 아래와 같은 내용을 작성해준다.FROM eclipse-temurin:17-jre-alpineWORKDIR /spring-bootCOPY build/libs/*SNAPSHOT.jar app.jarENTRYPOINT ["java", "-jar", "/spring-boot/app.jar"]FROM eclipse-temurin:17-jre-alpine-Docker 이미지를 생성할 때 기본으로 사용할 베이스 이미지를 설정하는 명령어이다.-이 경우, eclipse-temurin:17-jre-alpine 이미지를 사용하여 JRE 17이 설치된 환경에서 애플리케이션을 실행할 수 있도록 한다.WORKDIR /spring-boot-Docker 컨테이너 내에서 작업 디렉토리를 /s..
![[DB 성능 최적화] 실전 SQL 튜닝](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFaJwr%2FbtsJdFFDwY5%2FTLFruKVa9jiI8uuKqFyyj0%2Fimg.png)
이 글은 인프런의 MySQL 성능 최적화 입문/실전 (SQL 튜닝편) (박재성) 강의를 듣고 개인적으로 정리하는 글임을 알립니다.유저 이름으로 특정 기간에 작성된 글 검색 아래 더보기를 누르면 생성 및 더미 데이터 코드를 볼 수 있다.더보기기본 테이블 생성DROP TABLE IF EXISTS posts;DROP TABLE IF EXISTS users;CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);CREATE TABLE posts ( id INT AUTO_INCREMENT PRIMARY KEY, ..
![[인프런 알고리즘] Chapter 6, 9번 문제(뮤직비디오- 결정알고리즘)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMRXEM%2FbtsJdkvbMnK%2FWvaTExmWLiqKK1z27SUKZk%2Fimg.png)
이 알고리즘 문제는 인프런의 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 (김태원)의 문제입니다.문제 설명 코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;import java.util.StringTokenizer;public class sec06_09 { public static int count(int[] arr, int mid) { int count = 1; int sum = 0; for(int i = 0; i mid) { ++coun..
![[DB 성능 최적화] 기본 SQL 튜닝](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fefyhrb%2FbtsJaupmLol%2Ftj3Hg4RMUwwKiyJrkzKvk0%2Fimg.png)
이 글은 인프런의 MySQL 성능 최적화 입문/실전 (SQL 튜닝편) (박재성) 강의를 듣고 개인적으로 정리하는 글임을 알립니다.많은 데이터를 조회하는 단건 쿼리데이터를 조회할 때 한 번에 너무 많은 데이터를 조회하는 건 아닌지 체크LIMIT, WHERE문 등을 활용해서 한 번에 조회하는 데이터의 수를 줄이는 방법을 고려 테이블 생성DROP TABLE IF EXISTS users; # 기존 테이블 삭제CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), age INT); 100만건의 랜덤 데이터 삽입-- 높은 재귀(반복) 횟수를 허용하도록 설정-- (아래에서 생성할 더미 데이터의 개수와 맞춰서 작성하면 된다...