[SpringBoot] Docker 란?

익선·2023년 9월 21일
0

스프링부트

목록 보기
4/8

1. 서론

프로젝트에서 DB를 구축하고 서버를 배포하는 것을 담당하게 되었다. 초기에는 네이버 클라우드 플랫폼(NCP) 에서 제공한 크레딧을 사용하여, Cloud DB for MySQL, 서버 배포까지 모두 진행했었다.

하지만, 좀 더 값싼 요금제 선택과 좀 더 효율적인 배포 및 추후의 CI/CD 작업을 위해서 구글 클라우드 플랫폼(GCP)으로 위 작업을 변경시켜줬고, GCP 콘솔을 이용하여 DB 는 구축해놓은 상태이다.

이번에는 GCP 와 docker 라는 시스템을 활용하여 서버에 springboot 프로젝트를 배포하는 과정이 필요한데, Docker에 대한 지식이 부족하기에 이번 포스팅을 통해서 개념을 확실히 알아보면 좋을 것 같다.


2. Docker 란?

도커(Docker)컨테이너라 라는 격리된 환경에서 애플리케이션을 패키징하고 실행하는 소프트웨어 플랫폼(컨테이너를 구축, 시작, 중단하는데 사용할 수 있는 명령어를 제공해주는 컨테이너를 위한 운영체제)으로, 이를 통해 애플리케이션을 신속하게 구축, 테스트, 배포할 수 있습니다.

컨테이너는 필요한 모든 구성 요소(라이브러리, 시스템 도구, 런타임 등)를 포함하므로 현재 호스트 환경에 의존하지 않으며, 격리 보안을 통해 여러 컨테이너를 동시에 실행할 수 있습니다. 또한, 컨테이너를 쉽게 공유하고 동일한 방식으로 작동하는 환경을 제공하므로 개발 및 협업을 간편하게 할 수 있습니다.

즉, 운영체제, 서버, 패키지 버전 등 환경에 상관없이 동일한 환경으로 애플리케이션을 실행시켜주는게 바로 도커 컨테이너를 통해 가능하다는 말이다.

컨테이너란?

컨테이너 는 해당 호스트 시스템에서 실행되는 다른 모든 프로세스와 격리된 호스트 시스템에서 실행되는 샌드박스 프로세스이다.

  • 호스트 시스템 : 컨테이너가 실행되는 물리적인 또는 가상 서버, 컴퓨터
  • 샌드박스 : 외부로부터 들어온 프로그램이 보호된 영역에서 정상 동작하도록 하는 보안 형태

이러한 격리는 오랫동안 linux 에 있었던 커널 네임스페이스와 cgroup 을 활용한다. Docker 는 이러한 기능을 접근하기 쉽고 사용하기 쉽게 만든다. 요약하자면 컨테이너는 다음을 수행한다.

  • 1) 실행 가능한 이미지 인스턴스(실체)이다. Docker API 또는 CLI 를 사용하여 컨테이너를 생성, 시작, 중지, 이동 또는 삭제할 수 있습니다.
    • 도커 이미지("컨테이너 이미지", 건축 도면)가 인스턴스화(실행) 되면 도커 컨테이너(실제 집)가 생성(도커 이미지를 인스턴스화하여 애플리케이션을 실행할 수 있는 환경을 만든다)
  • 2) 로컬 머신, 가상 머신에서 실행하거나 클라우드에 배포할 수 있습니다
  • 3) 이식 가능하며 모든 OS 에서 실행될 수 있습니다.
  • 4) 다른 컨테이너와 격리되며 자체 소프트웨어, 바이너리, 구성 등을 실행합니다.

이미지란 무엇인가?

도커 이미지란 컨테이너를 정의하는 읽기 전용 템플릿이다. 이 이미지에는 코드에 필요한 라이브러리, 종속성에 대한 정의, 실행되는 코드가 포함되어 있다. 이런 도커 이미지가 인스턴스화된 것이 바로 도커 컨테이너이다.

  • 도커 컨테이너는 도커 이미지의 인스턴스(실체)
  • 도커 컨테이너를 실행하면, 그 컨테아너 안에서 실행하고자 하는 애플리케이션을 실행할 수 있는 것.

도커의 아키텍쳐


출처

https://ajdkfl6445.gitbook.io/study/devops/docker/basic-command
https://docs.docker.com/get-started/overview/

profile
꾸준히 기록하는 사람

0개의 댓글