Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) (10)

·2024년 2월 5일
0

애플리케이션 배포를 위한 컨테이너 가상화

virtualization

  • 물리적인 컴퓨터 리소스를 다른 시스템이나 애플리케이션에서 사용할 수 있도록 제공
    • 플랫폼 가상화
    • 리소스 가상화
  • 하이퍼바이저 (Hypervisor)
    • Virtual Machine Manager (VMM)
    • 다수의 운영체제를 동시에 실행하기 위한 논리적 플랫폼
    • Type 1: Native or Bare-metal
    • Type 2: Hosted
  • OS Virtualiztion
    • Host OS위에 Guest OS 전체를 가상화
    • VMWare, VirtualBox
    • 자유도가 높으나, 시스템에 부하가 많고 느려짐
  • Container Virtualization
    • Host OS가 가진 리소스를 적게 사용하며, 필요한 프로세스 실행
    • 최소한의 라이브러리와 도구만 포함
    • Container의 생성 속도 빠름

Container Image

  • Container 실행에 필요한 설정 값
    • 상태값 x, Immutable
  • Image를 가지고 실체화 -> Container

Dockerfile

  • Docker Image를 생성하기 위한 스크립트 파일
  • 자체 DSL(Domain-Specific language) 언어 사용 -> 이미지 생성과정 기술

Docker Desktop

docker를 설치하기위 해선 https://www.docker.com/products/docker-desktop 에 접속한다.

  • 컨테이너 실행
docker run [OPTION] IMAGE[:TAG|@DIGEST][COMMAND][ARG...]


다음과 같이 image를 다운 받을 수 있다.

Docker file

https://hub.docker.com

From openjdk:8-jdk-alpine

VOLUME /tmp

COPY target/users-ws-0.1.jar users-service.jar

ENRTYPOINT ["java",
"-Djava.security.egd=file:/dev/./random",
"-jar",
"users-service.jar"]

위처럼 docker file을 만들면

docker build -t gomin0/users-service:1.0 .
docker push gomin0/user-service:1.0

과 같이 빌드하고 push 할 수도 있고,

dockser pull gomin0/user-service:1.0

과 같이 pull받을 수도 있다.

다음과 같이 docker file을 만들자.

그 후 test code를 스킵하고 clean, compile, build를 하자

그 후 docker build --tag gomin0/user-service:1.0 . 을 통해 docker에 build하면

그 후 push를 하면

잘 올라가 있는 것을 확인할 수 있다.

애플리케이션 배포 - Docker Container

지금 까지 다양한 서비스, Kafka, Zipkin, Prometheus, Grafana, MariaDB, RabbitMQ 등을 사용해 서비스를 만들어 봤는데 이러한 다양한 서비스들이 하나의 가상의 네트워크를 가질 수 있도록 구축을 해보자. 그러기 위해선 docker에서 docker network를 하나 만들어야 한다.

  • Bridge network
    • $ docker network create --driver bridge [브릿지 이름]
  • Host network
    • 네트워크를 호스트로 설정하면 호스트의 네트워크 환경을 그대로 사용
    • 포트 포워딩 없이 내부 어플리케이션 사용
  • None network
    • 네트워크를 사용하지 않음
    • Io 네트워크만 사용, 외부와 단정
$ docker network create ecommerce-network
$ docker newtwork ls
profile
고민0

0개의 댓글