데이터센터프로그래밍09(1)

09-Docker Compose

😍 Docker Services
🔹 Different pieces of the app

  • 앱의 다른 부분은 분산된 어플리케이션에서 "서비스"라고 함
    🔹 video sharing site
  • ex. 비디오 공유 사이트
  • 데이터 베이스에 어플리케이션 데이터를 storing(저장)을 위한 서비스
  • 사용자가 무언가를 업로드 한 후 백그라운드에서 비디오 transcoding을 위한 서비스
  • front-end를 위한 서비스
    ➡ 도커 서비스는 하나의 어플리케이션을 구현하는 것(ex. 유튜브)
    ➡ 어플리케이션: 사용자에게 제공하는 하나임
    ➡ 서비스: 제공하고자 하는 어플리케이션 안에는 수많은 것이 있음
    ➡ 하나의 어플리케이션이 cpu와 디스크를 사용하지만, 하나의 서비스이며, 서로 다른 서비스들이 모여서 하나의 어플리케이션을 제공함
    ➡ 1) 사용자가 요구할 때 스트리밍할 비디오 서비스가 어플리케이션 안에 있고 2) 비디오 품질을 좌우하는 transcoding 3) 비디오를 꺼내고 스트리밍하는 프로트앤드 서비스가 있음

😍 Docker Services
🔹 사용자의 웹브라우저 어플리케이션을 사용자에게 제공
🔹 4가지의 서비스
▫ 웹브라우저 - 웹사이트 접속
▫ 웹백엔드 - 사용자가 접속 후에 프로트앤드 코드를 가져가는 경우
▫ 데이터 베이스 서비스 - 사용자에게 전달한 콘텐츠를 저장하는 곳
▫ intellignece service - 사용자에게 데이터를 주고, in-put을 받고 처리하는 작업
🧡 즉, 사용자의 요구를 받는 백앤드 서비스를 장고로 만들고, 백엔드가 정보추출, 저장 할 데이터베이스를 오픈소스로 만듦
🧡 따라서, 사용자에게 하나의 어플리케이션을 제공하지만, 내부적으로는 3가지의 서비스가 존재함 --> 이는 도커컨테이너로 구현이됨

😍 Docker Services
🔹 서비스는 실제로 "생산 중인 컨테이너"
▫ 서비스는 하나의 이미지만 실행
▫ but, 이미지가 실행되는 방식을 코드화함
▫ 어떤 포트를 사용해야 하는지 서비스가 필요한 용량을 갖기 위해 실행해야 하는 포함된 복제본의 수 등
▫ 서비스를 확장하면, 해당 SW를 실행하는 컨테인 인스턴스의 수가 변경됨
▫ 프로세스에서 서비스에 더 많은 컴퓨팅 자원 할당
➡ 서비스는 웹 사이트 어플리케이션을 제품화하고, 컨테이너로 구현됨
➡ 하나의 서비스는 하나의 이미지와 매핑이됨
ex. 컨테이너의 개수 조절 가능

😍 Port Mapping
◻ NAT/PAT
▫ NAT : Network Address Translation
▫ PAT : Port Address Translation

😍 YAML: markup language
: 프로그래밍언어들과 독립적으로 데이터 형태를 정의하는데 사용됨
: 데이터는 데이터! 동작은 동작이기 때문
: 동작자체는 데이터가 가정될 때, 그 데이터 프로그래밍 언어 동작이 독립적일 필요는 없음
: "YAML"라는 언어의 표준으로, 데이터의 형태를 나타내는 언어임
: YAML 파일 포멧으로 docker compose 파일을 만듦
➡ 데이터를 주고 받아야 할 때
➡ 즉, 포맷을 데이터로 주고 받는 표준언어

⭐ 코드는 다음과 같음

# 어플리케이션의 모든 서비스를 활성화 (start)
docker-compose up 

# 어플리케이션 안의 모든 컨테이너와 서비스를 중지 (stop)
docker-compose down

# 특정 컨테이너의 개수를 늘리고 싶을 때
docker-compose scale

😍 Creat Services & port mapping

  • docker-compose.yml
version: '3.7'
services:
	web:
    	image: nginx
        ports:
           - "xxxx:xx"
    database:
    	image: redis

⭐ 코드는 다음과 같음

# create services
docker-compose up -d

# check activated services
docker-compose config

# check activated services
docker container ls -a
docker image ls
docker stats

# stop services
docker-compose down

⭐ 코드는 다음과 같음

  • manager & workers
docker-compose up -d
docker container ls -a
curl (web browser)
docker cotainer exec -it{master container ID} /bin/bash
apt-get update
apt-get upgrade
apt-get -y install curl

# #은 번호임
curl http://worker#:##
curl http://worker#:##
docker-compose down

🌟 실행결과

좋은 웹페이지 즐겨찾기