Docker : 컨테이너를 관리하는 프로그램
- Docker가 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징
- 컨테이너 : 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 모든 것이 포함될 수 있음
- 가상화와 차이점
- 가상머신(VM) : 서버 하드웨어를 가상화(또는 직접 관리할 필요성을 제거)
- 컨테이너는 서버의 운영 체제를 가상화. Docker는 컨테이너를 위한 운영 체제(또는 런타임). 컨테이너를 실행하려는 각 서버에 Docker Engine이 설치되어 컨테이너를 구축, 시작 또는 중단 등이 가능
→ 컨테이너만 있으면 환경이 그대로 유지됨
→ 컨테이너 통째로 배포(업로드) 가능함 → 내려받아서 그대로 사용가능
⇒ 여러 곳에 배포가 가능하고, 휴먼에러 방지함(언제든지 동일한 환경 구성)
쿠버네티스(컨테이너 관리) : 컨테이너 갯수가 늘어나고, 컨테이너 별 버전관리 등이 필요 시 사용
docker와 쿠버네티스 둘다 컨테이너 관리이지만, 관리 영역이 다르며 두개는 연관관계가 없음
- 도커 : 컨테이너를 생성하고 실행해주는 컨테이너 관리 툴
- 쿠버네티스 : n개 서버의 광역의 도커의 컨테이너들을 관리 (컨테이너 자체 관리)
도커 사용하여 컨테이너 생성하기
0. IntelliJ 에서 빌드파일 준비(~.jar)
1. 도커 및 도커데스크탑(GUI) 설치
- Docker-hub 공식 사이트 : https://hub.docker.com/
- Docker desktop 내려받기 : https://www.docker.com/products/docker-desktop
2. docker build를 위한 설정파일 만들기
1) Docker파일 생성을 위한 property 파일 생성 : Dockerfile (intelliJ에 가장상위에 파일 생성)
# base-image
FROM openjdk:11
# Copy에서 사용될 경로 변수
ARG JAR_FILE=build/libs/*.jar
# jar 빌드 파일을 도커 컨테이너로 복사
COPY ${JAR_FILE} app.jar
# jar 파일 실행
ENTRYPOINT ["java","-jar","/app.jar"]
3. Docker 이미지 생성 및 컨테이너 띄우기
- docker images : 저장소 등에서 다운받아지는 형태
- docker container : 실제 실행가능한 상태
- 또한, Docker는 layer형태로 되어 있어 변경된 layer에만 반영됨(형상관리)
1) docker에서 빌드 하기(Dockerfile이 위치한 경로에서) → docker image로 생성됨
2) docker image를 컨테이너화 하기
3) localhost로 해당 포트 접속하면 컨테이너 정상 구동 확인(혹은 docker desktop에서 container 확인)
docker build -t test:0.0.1 .
docker run -p 8080:8080 [img_id] //내부통신포트:외부통신포트
4. Docker 컨테이너 중단 및 삭제
//중지된 ps까지 확인
docker ps -a
docker stop [img_id]
docker rm [img_id]
//도커 이미지 삭제
docker image rm
5. Docker 원격저장소에 image 올리기
- 원격저장소는 img의 tag 명 설정으로 가능 : [dockerid/img이름]
//다른 img 가져오기
docker pull [tagname:version or img id]
docker pull tomcat:9.0.80-jre11-temurin-jammy
//img 올리기
docker push jiyoung0/test:0.0.1
//img tag 추가하기
docker tag [img_id] [repositoryName/new_name:version]jiyoung0/test:0.0.1
//현재 이미지 전체 목록보기
docker images -a
참고1. 컴파일과 빌드
- 컴파일 : 소스코드를 바이너리 코드로 변환
- 빌드 : 실행가능한 소프트웨어 산출물로 만들어주는 일련의 과정. 컴파일된 파일을 꾸러미로 패키지 하는 등. 일반적으로 컴파일이 포함됨
- 실행 : 빌드된 파일을 실행하여 메모리에 올라가는 과정
IntelliJ에서 빌드하고 런까지 해줌.
빌드tool(gradle, maven)을 사용하여 빌드만도 가능
참고2. intelliJ에서 build 파일 생성(run 하지 않고)
'Coding > Back - Spring Framework' 카테고리의 다른 글
보안 기초 : 쿠키(Cookie) & 세션(Session) #Day23 (0) | 2023.09.18 |
---|---|
gitAction 자동배포 #Day22 (0) | 2023.09.14 |
Spring API문서화 2/2 Spring RestDocs #Day20 (0) | 2023.09.12 |
Spring API문서화 1/2 Swagger #Day19 (0) | 2023.09.12 |
Spring View-Thymeleaf #Day16 (0) | 2023.09.11 |