[배포] 컨테이너 가상화

jsieon97·2023년 3월 23일
0

컨테이너 가상화

  • 물리적인 컴퓨터 리소스를 다른 시스템이나 애플리케이션에서 사용할 수 있도록 제공
    • 플랫폼 가상화
    • 리소스 가상화
  • 하이퍼바이저(Hypervisor)
    • Virtual Machine Manager (VMM)
    • 다수의 운영체제를 동시에 실행하기 위한 논리적 플랫폼
    • Type 1: Native or Bare-metal
    • Type 2: Hosted

사용하는 이유?

  • OS Virtualization (운영체제 가상화)
    • 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 다운로드

설치 후

  • terminal 혹은 cmd에서
    • docker info 도커 정보
    • docker image ls 도커 이미지 리스트
    • docker container ls 실행중인 컨테이너 리스트

Docker 실행

  • 도커 실행 docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
  • https://hub.docker.com/ 에서 검색을 통해 Dokcer Image를 다운 받을 수 있다.
    ex) docker pull {Image이름}

Docker 이미지 생성

// UserService의 도커파일 설정

FROM openjdk:17-ea-11-jdk-slim 
VOLUME /tmp
COPY build/libs/user-service-1.0.jar UserService.jar
ENTRYPOINT ["java","-jar","UserService.jar"]

Docker Bridge 네트워크

https://itbhome.tistory.com/47 (참고)

네트워크 생성

docker network create --gateway 172.18.0.1 --subnet 172.18.0.0/16 {네트워크명}

Container 가상화

kafka 가상화

Zookeeper + Kafka Standalone
# docker-compose-single-broker.yml

version: '2'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
    networks: 
      my-network:
        ipv4_address: 172.18.0.100
  kafka:
    # build: .
    image: wurstmeister/kafka
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: 172.18.0.101
      KAFKA_CREATE_TOPICS: "test:1:1"
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on:
      - zookeeper
    networks: 
      my-network:
        ipv4_address: 172.18.0.101

networks:
  my-network:
    name: ecommerce-network # 172.18.0.1 ~
docker-compose?
  • 복수 개의 컨테이너를 실행시키는 도커 애플리케이션이 정의를 하기 위한 툴입니다.
  • Compose를 사용하면 YAML 파일을 사용하여 애플리케이션의 서비스를 구성할 수 있습니다.
  • 그런 다음 single command를 사용하여 구성에서 모든 서비스를 만들고 시작합니다.
  • docker-compose 실행 docker-compose -f docker-compose-single-broker.yml up -d

Zookeeper와 kafka가 같이 컨테이너화된 것을 볼수 있다.

도커 명령어

참고 ) https://www.google.com/search?q=%EB%8F%84%EC%BB%A4+%EB%AA%85%EB%A0%B9%EC%96%B4+%EC%A0%95%EB%A6%AC&oq=%EB%8F%84%EC%BB%A4+%EB%AA%85%EB%A0%B9%EC%96%B4+%EC%A0%95%EB%A6%AC&aqs=chrome.0.0i512l4j0i30l2j0i8i30l2j0i5i30l2.2802j0j7&sourceid=chrome&ie=UTF-8

컨테이너화

profile
개발자로써 성장하는 방법

0개의 댓글