1. 도커 컴포즈란? 시스템 구축과 관련된 명령어를 하나의 텍스트 파일에 기재해 시스템 전체를 실행하고 종료, 폐기 과정을 하나의 명령어로 처리하도록 하는 도구다. YAML포맷으로 기재한 정의 파일을 이용한다. 작성 내용은 도커 명령어와 비슷하다. Dockerfile은 이미지만 생성할 수 있으나, 도커 컴포즈는 네트워크와 볼륨도 생성할 수 있다. up 커맨드 : docker run 커맨드와 비슷하다. 이미지를 내려받고 컨테이너를 생성 및 실행한다. down 커맨드 : 컨테이너와 네트워크를 정지 및 삭제한다. 볼륨과 이미지는 삭제하지 않는다. stop 커맨드 : 컨테이너와 네트워크를 삭제하지 않고 종료하고 싶을 때 사용한다. 2. 도커 컴포즈 사용법 미리 정해진 docker-compose.yml 이라는 이..
Backend/Docker
1. 스토리지 마운트 종류 볼륨 마운트 도커 엔진이 관리하는 영역 내에 만들어진 볼륨을 컨테이너에 디스크 형태로 마운트 한다. 이름만으로 관리가 가능해 다루기 쉬우나 볼륨에 비해 직접 조작하기 어렵다. 임시 목적으로 사용하거나 자주 쓰진 않지만 지우면 안 되는 파일을 두는 목적으로 사용한다. 바인드 마운트 도커가 설치된 컴퓨터의 문서 폴더 등 도커 엔진에서 관리하지 않는 영역의 기존 디렉터리를 컨테이너에 마운트 한다. 폴더 속에 파일을 직접 두거나 확인할 수 있기 때문에 자주 사용하는 파일을 둔다. 항목 볼륨 마운트 바인드 마운트 스토리지 영역 볼륨 디렉터리 or 파일 물리적 위치 도커 엔진 관리 영역 어디든 마운트 절차 볼륨 생성 후 마운트 기존 파일 or 폴더 마운트 내용 편집 도커 컨테이너를 통함 ..
1. Gradle 기반 프로젝트 생성하기 간단한 Spring Boot 프로젝트를 생성한다. DB는 사용하지 않았다. MVC 모델로 구성했다. 2. 프로젝트 빌드하기 프로젝트를 빌드하면 아래와 같이 .jar 파일이 생성된다. 파일명은 프로젝트명-[Gradle에서 설정한 버전] 으로 생성된다. 3. Dockerfile 작성하기 멀티 스테이지로 작성했다. 우선 프로젝트를 빌드한다. 빌드 스테이지에서 RUN를 두 번 하는데 이는 의존성이 변경된 경우에만 의존성 RUN을 한다. 앱 스테이지에서는 빌드 스테이지의 산출물인 jar 파일을 복사한다. FROM gradle:8.5-jdk17 as builder WORKDIR /build COPY build.gradle settings.gradle ./ RUN gradle..
1. 컨테이너와 호스트 사이에 파일 복사 이미지 레이어는 읽기 전용이다. 그러나 기존 이미지 레이어에 있는 파일을 수정할 수 있다. 컨테이너에서 이미지 레이어에 포함된 파일을 수정하려면, 도커가 파일을 쓰기 가능 레이어로 복사해 수정한다. 컨테이너나 애플리케이션에서는 이 과정이 드러나지 않지만, 도커가 스토리지를 효율적으로 사용하는 이유다. cp 명령어를 이용한다. docker cp [원본경로] [복사할경로] 호스트 -> 컨테이너 : docker cp [host 파일경로] [container 이름]:[container 내부 경로] 컨테이너 -> 호스트 : docker cp [container 이름]:[container 내부 경로] [host 파일경로] 디렉터리를 경로로 지정한 경우 디렉터리 전체를 통채로..
1. 레지스트리, 리포지처리, 이미지 태그 다루기 이미지가 저장되는 서버다. 도커 허브는 도커 레지스트리 중에 가장 유명한 레지스트리다. 이미지의 전체 이름은 4 개의 구성 요소로 이루어진다. docker.io/diamol/golang:latest docker.io : 이미지가 저장된 레지스트리의 도메인이다. (default 도커 허브) diamol : 이미지 작성자의 계정 이름이다. - pull은 누구나 가능하지만 push는 소속원만 가능하다. golang : 이미지릐 리포지터리 이름이다. 애플리케이션의 이름이다. latest : 이미지 태그다. 애플리케이션의 버전을 나타낸다. 2. 도커 허브에 이미지 푸시하기 이미지 푸시에는 두 가지 절차가 필요하다. 도커 명령행을 통해 레지스트리에 로그인을 하고, ..
1. 멀티 스테이지 Dockerfile 스크립트 동작 원리 여러 개의 BaseImage를 사용하여 docker build를 수행한다. 여러 개의 FROM 명령문을 사용한다. FROM 키워들르 기준으로 작업공간이 분리되고, 이를 stage라고 한다. 그러나 최종 도커 이미지로 생성되는 건 한 장이다. Container Image를 만들면서 최종 컨테이너에는 필요 없는 환경을 제거한다. 최종 컨테이너 실행 시에는 Build에 사용한 의존 파일들이 모두 삭제된다. 빌드는 순차적으로 진행된다. 예시로 1단계 빌드에서 텍스트 파일을 생헝하면 2단계 빌드에서는 1단계에서 생성한 텍스트 파일을 복사해 온다. 즉, 앞 단계의 산출물을 복사해서 이용한다. 따라서 중간에 명령어가 실패하면 전체 빌드가 실패한다. 2. 컨테..