분류 전체보기

Docker 사용 시 마주할 용어docker image(이미지) : Docker 격리 정의 단위Dockerfile: Docker 격리 정의 서술 (Instruction)Docker Container(컨테이너): Docker 격리 동작 단위 = 격리된 공간에서 실행중인 Docker 이미지Docker Engine(= API + CLI + Docker Deamon) : Docker 이미지를 구동 및 관리하기 위한 엔진Docker Engine 위에 이미지를 올리고 Run 구동 시 독립적인 Docker Container 실행Host 호스트 = Node 노드 = Instance 인스턴스 = Server 서버: Docker Engine 구동Host는 다수의 Container를 갖는다.Node는 다수의 Containe..
CacheImprove your build speed with effective use of the build cachedocs.docker.com Docker Image 는 매 Instruction 마다 layer로 구성되며 이 중간 과정을 Cache해 놓는다. How the Build Cache works도커 빌드 캐시를 이해하면 더 빠른 이미지를 생성하는 도커 파일을 작성할 수 있다. 아래 예시는 C 언어로 작성된 작은 도커 파일이다.# syntax=docker/dockerfile:1FROM ubuntu:latestRUN apt-get update && apt-get install -y build-essentialsCOPY main.c Makefile /src/WORKDIR /src/RUN make..
CD: AWS EC2 생성 후 내부 접속하여 CI 로 만든 Docker 이미지 실행개발자 대신  Github Action이 직접 EC2에 접근하여 도커 이미지를 컨테이너로 실행아래 과정을 거쳐서 Github Action을 자동화 해줘야한다.1. github action 에게 접근하고 조작할 수 있는 권한주기 -> IAM 을 통해서 부여2. github action 이 EC2 서버에 들어가기 위한 방화벽 설정3. EC2 shell 에 접근하기 위해 key pair 사용하지 않고 IAM 으로 접근해서 image pull, run 자동화1. AWS IAM 설정: Github Actions 가 EC2 에 접근할 계정 생성IAM: AWS 서비스에 대한 접근 권한을 가진 사용자를 생성하는 서비스Github Acti..
문제Docker 이미지를 github action에서 생성 후 자동으로 Docker Hub에 올리도록 자동화를 하였다.그리고 Ec2에서 이미지를 pull하려니까 접근 권한 거부 에러가 떳다. 해결`/var/run/docker.sock` 에 권한을 부여해주면된다.sudo chmod 666 /var/run/docker.sock 이미지가 잘 받아와지는걸 확인할 수 있다.
Docker 격리 정의 시 : 단일 / 다중 이미지 정의하나의 OS 위 다양한 컨테이너를 조합하여 어플리케이션 구동 가능어플리케이션 = 컨테이너 조합 (컨테이너는 격리된 공간에서 프로세스가 동작하는 기술)단일 컨테이너 어플리케이션 관리: Dockerfile 통한 단일 이미지 구성 및 구동다중 컨테이너 어플리케이션 관리: Docker-Compose 통한 다수 이미지 구성 및 구동Docker Compose 내 다중 컨테이너 사이에서의 network 도커 안에서 컨테이너끼리 network 통신하기 위해 (1) User-defined Bridge, (2) Hostname 2가지가 있음. docker-compose.yml 파일 내 `ports:` 옵션만 준 경우 Spring 에서 MySQL 사용시 어떤 포트 사용..
Docker 왜 사용하는가?1. 일관성 보장2. 다중 컨테이너 지원1. 일관성 보장어플리케이션이 어떤 머신에서도 정상 및 동일 동작하기 위해서는 어플리케이션이 구동되는데 필요한 모든 것들이 아래의 환경과 버전 등이 맞아야한다. -> 이를 일관성이라고 한다.Application 파일환경 변수런타임 환경, 버전서드파티 라이브러리Cut down OS 격리 (Isolation) & 일관성 (Consistency)격리 : 로컬(인스턴스)의 환경과 분리된 도커 환경으로 로컬 환경을 오염 / 충돌하지 않음일관성 : 다양한 로컬(인스턴스)에서도 도커로 일관된 어플리케이션 구동 가능도커가 없다면 로컬(인스턴스)의 환경과 + App 구동을 위한 환경이 충돌하고 이리저리 섞인다.도커가 있다면 로컬(인스턴스)의 환경과 + A..
충돌난 상황featrue/signup-test-api 브랜치에서 로컬에서 작업후 커밋remot에서 featrue/signup-test-api 브랜치의 내용이 변경이후 로컬에서 pull을 하려니까 위 사진과 같이 pull이 되지 않았다. 새로운 커밋을 남기지 않고 pull 할 수 있는 방법인 `rebase` 를 사용해서 문제 해결. 해결 과정git pull 에서 에러가 난 브랜치에서 아래 명령어 실행해서 원격에 수정된 최신 코드를 로컬의 `ref/remotes/origin/{branch_name}`에 받아온다.git fetch 아래 명령을 실행해서 원격 코드 위에 다시 로컬 코드들을 순서대로 쌓는다(커밋)git rebase origin/{branch_name}
pinary[i] = i 자리 이친수를 만들 수 있는 경우의 수pinary[i]는 i-1 자리 이친수 패턴을 그대로 적용할 수 있다.그리고 위 사진을 잘 보면 i 자리 이친수는 i-2 자리 이친수 패턴이 적용된 i -1 자리 이친수에 2가지 경우 (0, 1)가 가능하다. 예를 들어서 i = 5 라고 하면,10000, 1000110101, 10100빨간색으로 칠한 부분이 i = 3 자리인 이친수이다.pinary[i] 는 pinary[i-1]의 경우의 수를 그대로 가져가고, 추가로 pinary[i-2]의 경우의 수가 추가된다. 결국 pinary[i] = pinary[i-1] + pinary[i-2] 가 성립
ExceptionResolverspring(WAS) 내 예외 처리BasicErrorControllerspring 기본 에러 처리 (페이지 기반)스프링부트는 예외가 발생하면 기본적으로 `/error`로 에러 요청을 다시 전달하도록 WAS 설정을 해두었다고 한다.@RequsetMapping에 /error로 매핑된걸 볼 수 있다. 참고로 에러 경로는 properties에서 server.error.path로 변결 가능하다별도의 설정이 없다면 예외 발생시에 BasicErrorController로 에러 처리 요청이 전달된다.HandlerExceptionResolverJava에서는 예외 처리를 위하 try-catch를 사용해야하지만 try-catch를 모든 코드에 붙이는 것은 비효율적임스프링은 예외 처리를 위한 tr..
hapBday
'분류 전체보기' 카테고리의 글 목록 (3 Page)