Cloud/GCP

[GCP] 구글 클라우드와 컨테이너

Ofglen 2023. 7. 10. 15:36

쿠버네티스는 구글이 만든 서비스이기 때문에 특성이 같다. 그러나 현재 다양한 벤더들이 사용하기 때문에 독립적 성격을 가진다.

컨테이너: 리소스 효율이 높고 이동성이 우수한 독립형 패키지

이미지: 애플리케이션 실행에 필요한 종속성, 환경설정들을 포함하는 패키지

 

 

컨테이너 실행 단계

https://velog.io/@devgosunman/%EB%8F%84%EC%BB%A4-Docker-%EC%9A%94%EC%95%BD-%EC%B5%9C%EC%A2%85%EB%B3%B8

 

  1. 컨테이너 이미지 작성: 도커(Docker) 이미지가 가장 일반적으로 사용된다. 필요한 경우, Dockerfile을 작성해서 이미지를 빌드한다.
  2. 컨테이너 오케스트레이션 플랫폼(Kubernetes) 설정으로 컨테이너 자동 확장 및 배포 설정 Ex) GKE
  3. 컨테이너 클러스터 구성
  4. 컨테이너 배포: 이미지를 사용해서 애플리케이션 클러스터에 배포
  5. 모니터링: 컨테이너 실행되면 오케스트레이션 플랫폼으로 컨테이너 상태, 로그, 성능 등을 모니터리하고 관리한다.

 

 

 

여러 레이어로 구조화된 컨테이너

https://blog.naver.com/alice_k106/221530340759

컨테이너들은 여러 레이어로 구조화되고 Dockerfile에 이미지 명령어가 실행될 때 마다 기본 이미지 레이어(R/O)가 생성되어 최종적으로 flatted 이미지가 만들어진다.

 

 

Dockerfile

# ubuntu 18.04 기반의 도커 이미지를 기반으로 새로운 이미지를 빌드한다
FROM ubuntu:18.04

# 현재 디렉토리의 Dockerfile 모든 파일과 폴더를 컨테이너 내 /app 경로로 복사
COPY . /app

# /app 경로에 있는 소스 코드를 빌드하고 컴파
RUN make /app

# 파일들을 /app 경로로 복사하고,
# /app 경로 내의 소스 코드를 make 명령을 사용하여 빌드한 후,
# 컨테이너가 실행될 때, /app/python/app/app.py 파일을 실행
CMD python/app/app.py

 

 

컨테이너는 계속 띄워진 상태로 접근할 수 있어야한다. 따라서 foreground로 실행되어야 한다.

 

https://ykarma1996.tistory.com/192

 

 

 

구글 클라우드에 컨테이너를 마이그레이션 하려면 다음 요소들을 사용한다.

  • docker: docker 명령어를 사용해서 컨테이너를 빌드한다.
  • Cloud Build: 고유 컨테이너를 빌드한다.
  • Artifact Registry: 컨테이너화된 소프트웨어를 다운로드한다. *Container Registry도 이용할 수 있으나실무에서는 Artifact Registry를 권장한다.

 

 

 

 

컨테이너 띄우는 순서

  1. Docker: Docker 명령어를 사용하여 컨테이너를 빌드합니다. Docker는 컨테이너화된 애플리케이션을 만들고 실행하기 위한 플랫폼입니다. Docker를 사용하면 Dockerfile을 작성하고, 해당 파일을 사용하여 컨테이너 이미지를 빌드하고 실행할 수 있습니다. 일반적인 Docker 명령어에는 docker build, docker run, docker push 등이 있습니다.
  2. Cloud Build: Google Cloud Platform(GCP)의 서비스인 Cloud Build는 고유 컨테이너 이미지를 빌드하는 데 사용됩니다. Cloud Build는 클라우드에서 빌드, 테스트 및 배포를 자동화하기 위한 관리형 서비스입니다. Cloud Build는 소스 코드 저장소(Git 또는 버전 관리 시스템)와 연결하여 빌드 구성 파일을 사용하여 컨테이너 이미지를 생성합니다.
  3. Container Registry: Container Registry는 컨테이너화된 소프트웨어 이미지를 저장하고 관리하는 서비스입니다. Google Cloud Platform의 Container Registry는 Docker 컨테이너 이미지를 저장하는 데 사용됩니다. Container Registry는 프라이빗 이미지 저장소로 사용되며, 보안 및 액세스 제어 기능을 제공합니다. Artifact Registry는 Google Cloud의 권장 서비스로서, 일반적으로 컨테이너 외에도 다양한 패키지 유형을 저장하고 관리하는 데 사용됩니다.

 

결론: Docker를 사용하여 컨테이너를 빌드하고, GCP의 Cloud Build를 사용하여 고유 컨테이너를 빌드하며, Container Registry 또는 Artifact Registry를 사용하여 컨테이너화된 소프트웨어 이미지를 저장하고 다운로드한다.