Backend/Docker & Kubernetes
Mac M1에서 Dockerfile을 빌드하여, Dockerhub에 배포한 후, AWS의 Ubuntu에 해당 이미지를 다운로드 받은 후, Docker-compose를 통해 배포하려고 시도하였다.. 해당 과정에서, Dockerfile의 이미지를 내려받는 중 JDK 플랫폼 불일치 에러 "exec format error"가 발생하였다. "exec /usr/local/openjdk-11/bin/java: exec format error 구글링을 통해 나온 해당 문제점은 아래와 같았다. Mac M1에서 Docker를 빌드한 이미지는 ARM64 아키텍처를 사용하므로, Ubuntu 서버에서 실행하려면 AMD64 아키텍처에 호환되는 이미지를 빌드해야 한다. 즉, Mac OS의 M1에서 발생하는 고질적인 문제가 원인이었..
쿠버네티스란? 쿠버네티스(Kubernetes)는 컨테이너 오케스트레이션 플랫폼의 하나로, 분산 시스템을 관리하고 배포하는 데 사용된다. 쿠버네티스는 컨테이너화된 애플리케이션을 자동화된 방식으로 관리하고 확장할 수 있도록 도와준다. 쉽게 말해서 컨테이너 기술을 제공해 주는 것의 예시가 도커라면, 쿠버네티스는 컨테이너들의 집합을 관리해주는 플랫폼이다. 예를 들어 생각해보면, 우리가 웹 서버를 여러대의 서버 인스턴스(컴퓨터)들에서 도커 컨테이너로 운영하고 있다고 생각해보자. 만약 쿠버네티스를 사용하지 않는다면, 우리는 배포할 때에, 일일이 서버 인스턴스에 접속해서 도커 명령어를 통해 업데이트를 진행해야 하는 번거로움이 있을 것이다. 쿠버네티스는 이런 일련의 과정을 자동화해주며, 도커 호스트 관리, 컨테이너 배..
이전 포스팅에서 Spring Boot 프로젝트를 Dockerfile을 작성하여 빌드하고, 컨테이너상에서 실행시키는 것. 그리고 Dockerhub에 배포해 보는 것까지를 해 보았다. https://sjh9708.tistory.com/81 [Docker] Spring Boot App을 Dockerlizing하기 : 1. 이미지와 컨테이너, 그리고 Dockerfile 작성하기 이미지 컨테이너 실행에 필요한 모든 파일과 설정 등을 포함하는 템플릿이다. 컨테이너를 실행하기 위한 환경설정, 작업 디렉터리, 환경변수, 실행할 명령어 등을 정의한 패키지 파일이라고 볼 sjh9708.tistory.com 이제 여러개의 컨테이너들을 한 번에 실행시키고 상호연결시킬 수 있도록 하는 docker-compose에 대해서 알아보..
이미지 컨테이너 실행에 필요한 모든 파일과 설정 등을 포함하는 템플릿이다. 컨테이너를 실행하기 위한 환경설정, 작업 디렉터리, 환경변수, 실행할 명령어 등을 정의한 패키지 파일이라고 볼 수 있다. 여러 개의 레이어(layer)로 구성된다. 각 레이어는 이전 레이어의 변경 사항을 적용하여 구성된다. Docker 이미지의 변화가 있다면, 컨테이너를 실행시키기 위해 모든 내용을 전부 다시 빌드하는 것이 아니라, 변경이 필요한 부분만을 다시 빌드하게 된다. 레이어 기반의 구조는 이미지 크기를 최소화하고 이미지 간에 공통된 레이어를 공유하여 효율적인 디스크 공간 사용을 가능하게 한다. 이미지는 Dockerfile이라는 텍스트 파일에 정의된다. Dockerfile은 어떻게 이미지를 빌드할지에 대한 명령과 설정을 포..
가상 머신의 등장과 문제점 컴퓨터 기술의 발전에 따라서, 컴퓨터 안에서 또다른 컴퓨터를 만들어 이용할 수 있게 하는 기술이 생겨났다. 이를 가상 머신이라고 한다. 한 컴퓨터에서 두 개 이상의 운영체제를 사용이 가능하게 하는 기술 컴퓨터의 시스템 환경에 영향을 받지 않고 독립적인 환경에서 Task를 진행 가능 가상화 기술을 이용하여 서버를 임대해주는 기술이 바로 클라우드 서비스 하지만 이런 가상 머신에는 문제점이 있었다. 컴퓨터를 그대로 복제하여 사용하기에 독립적인 운영체제(Guest OS)를 생성한다. 따라서 용량을 많이 잡아먹으며 성능 문제이 발생한다는 측면이 있었다. 이를 바탕으로 컨테이너 기반의 격리 환경을 만들어주는 Docker가 사용되기 시작하였다. Docker란 무엇인가? 1. 반가상화 기존의..