클라우드
Cloud - 배포 컨테이너
상상날개
2022. 8. 5. 15:21
1. Docker 설치
- Window용 Docker Desktop을 설치한다
- https://docs.docker.com/desktop/install/windows-install
- Docker Desktop 설치 전에 Linux 4단계 - Linux 커널 업데이트 패키지 다운로드하여 설치한다
- https://docs.microsoft.com/ko-kr/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package
이전 버전 WSL의 수동 설치 단계
wsl install 명령을 사용하지 않고 이전 버전의 Windows에 WSL을 수동으로 설치하는 방법에 대한 단계별 지침입니다.
docs.microsoft.com
Install Docker Desktop on Windows
docs.docker.com
- Close ans log out 를 클릭한다(재부팅 되니까 다른 프로그램 사용 시 주의)
- 설치 후 터미널에서 Docker 설치 여부 및 버젼을 확인 한다
2. 컨테이너
1) 일반 컨테이너의 장점
- 물자를 싣고 내릴 때에, 선박이 입항해 있는 시간을 단축할 수 있다
- 물자를 싣고 내릴 때 필요한 인력(분류하는 사람, 짐 옮기는 사람, 감독하는 사람)을 감소할 수 있다
2) 리눅스 컨테이너(Linux Container, lxc)
- 컨테이너 기술을 소프트웨어 배포에 사용하기 위하여 적용한 시스템이다
- 애플리케이션이 의존성, 네트워크 환경, 파일 시스템에 구애받지 않고, 도커라는 기술 위에 실행될 수 있도록 만든 애플리케이션 상자이다
- 애플리케이션을 쉽게 컨테이너화할 수 있는 생태계 혹은 커뮤니티가 없었다
- 2013년에 등장한 도커(Docker)는 Docker Hub라는 소프트웨어 저장소와 함께 빠르게 성장했다
- 개발자들은 쉽게 애플리케이션을 포장하고, 컨테이너 방식으로 실행할 수 있게 되었다
3) 컨테이너의 격리 요소
- 프로세스
- 특정 컨테이너에서 작동하는 프로세스는 기본적으로 그 컨테이너 안에서만 액세스할 수 있다
- 컨테이너 안에서 실행되는 프로세스는 다른 컨테이너의 프로세스에게 영향을 줄 수 없다 - 네트워크
- 기본으로 컨테이너 하나에 하나의 IP 주소가 할당된다 - 파일 시스템
- 컨테이너 안에서 사용되는 파일 시스템은 구획화되어 있다
- 해당 컨테이너에서의 명령이나 파일 등의 액세스를 제한할 수 있다
3. 컨테이너의 장점
1) 개발 및 배포 환경의 일치
- 애플리케이션 실행은 환경에 구애를 받는다
- 프로그램(A) 실행에 프로그램(B)가 반드시 필요한 경우, '프로그램 A는 프로그램 B에 의존 관계를 가진다'고 한다 - 한 개의 컴퓨터에서 여러 개의 프로그램을 실행할 경우 의존성이 각각 다르면 충돌이 발생한다
- 컨테이너의 적용으로 실행 환경에 구애받지 않고 애플리케이션을 실행할 수 있다
- OS에 상관없이 애플리케이션 실행 환경을 만들 수 있다
- 개발을 컨테이너 위에서 진행할 경우 동일한 환경 하에 개발을 진행할 수 있다
2) 편리한 수평 확장 및 배포의 편이성
- 로드밸런서(Load Balancer)
- 리버스 프록시 서버(Revers Proxy server)의 한 종류이다
- 다수의 사용자가 동일한 서비스를 이용할 경우 많은 양의 트래픽이 발생한다
- 서비스 제공자들은 이러한 트래픽 분산을 위해 프록시 서버를 운영한다
- 프록시 서버는 여러 대의 동일한 검색 서버 중 여유로운 서버를 이용할 수 있도록 도와준다
- 동일한 애플리케이션 구성(이미지)을 바탕으로 새로운 서버에 해당 애플리케이션을 컨테이너로 실행하고, 로드 밸런서에 이 서버를 추가하기만 하면 된다
- AWS의 경우 서버를 만들고 삭제하는 일을 자동으로 해 준다
- 새로운 버전의 애플리케이션을 여러 서버 중 몇 대에만 운영하여 테스트 할 수도 있다
- 새로운 버전의 애플리케이션에서 발생할 수 있는 문제들을 미리 확인할 수 있다 - 쿠버네티스와 같이 "오케스트레이션 도구"라고 부르는 것들이 이러한 일을 해주는 도구이다
- https://www.redhat.com/ko/topics/containers/what-is-container-orchestration
컨테이너 오케스트레이션이란?
컨테이너 오케스트레이션은 컨테이너의 배포, 관리, 확장, 네트워킹을 자동화합니다.
www.redhat.com
4. 이미지(Image)
- 실행되는 모든 컨테이너는 이미지로부터 생성된다
- 이미지는 애플리케이션 및 애플리케이션 구성을 함께 담아놓은 템플릿이다
- 이미지를 이용해서 컨테이너를 만들 수 있다 - 이미지를 이용해 여러 개의 컨테이너를 생성할 수 있다
- 애플리케이션의 수평 확장이 가능하다 - 이미지는 기본 이미지(base image)로부터 다른 이미지를 만들 수도 있다
- git을 사용하는 것처럼 변경 사항을 추가하고 커밋하여 이미지를 변경할 수 있다 - 스프링부트 기반의 애플리케이션을 이미지로 만들고 싶은 경우
- 스프링부트 초기 세팅 이미지를 기본 이미지로 하고 제작한 애플리케이션을 추가하여 이미지화할 수 있다 - 이미지는 레지스트리에 저장된다
- 대표적인 이미지 레지스트리에는 Docker Hub, Amazon ECR 이 있다
- 도커 CLI에서 이미지를 이용해 컨테이너를 생성할 경우
- 호스트 컴퓨터에 이미지가 존재하지 않으면 기본 레지스트리로부터 다운로드 받는다