프로젝트에서 DB를 구축하고 서버를 배포하는 것을 담당하게 되었다. 초기에는 네이버 클라우드 플랫폼(NCP) 에서 제공한 크레딧을 사용하여, Cloud DB for MySQL, 서버 배포까지 모두 진행했었다.
하지만, 좀 더 값싼 요금제 선택과 좀 더 효율적인 배포 및 추후의 CI/CD 작업을 위해서 구글 클라우드 플랫폼(GCP)으로 위 작업을 변경시켜줬고, GCP 콘솔을 이용하여 DB 는 구축해놓은 상태이다.
이번에는 GCP 와 docker 라는 시스템을 활용하여 서버에 springboot 프로젝트를 배포하는 과정이 필요한데, Docker에 대한 지식이 부족하기에 이번 포스팅을 통해서 개념을 확실히 알아보면 좋을 것 같다.
도커(Docker) 는 컨테이너라 라는 격리된 환경에서 애플리케이션을 패키징하고 실행하는 소프트웨어 플랫폼(컨테이너를 구축, 시작, 중단하는데 사용할 수 있는 명령어를 제공해주는 컨테이너를 위한 운영체제)으로, 이를 통해 애플리케이션을 신속하게 구축, 테스트, 배포할 수 있습니다.
컨테이너는 필요한 모든 구성 요소(라이브러리, 시스템 도구, 런타임 등)를 포함하므로 현재 호스트 환경에 의존하지 않으며, 격리 보안을 통해 여러 컨테이너를 동시에 실행할 수 있습니다. 또한, 컨테이너를 쉽게 공유하고 동일한 방식으로 작동하는 환경을 제공하므로 개발 및 협업을 간편하게 할 수 있습니다.
즉, 운영체제, 서버, 패키지 버전 등 환경에 상관없이 동일한 환경으로 애플리케이션을 실행시켜주는게 바로 도커 컨테이너를 통해 가능하다는 말이다.
컨테이너 는 해당 호스트 시스템에서 실행되는 다른 모든 프로세스와 격리된 호스트 시스템에서 실행되는 샌드박스 프로세스이다.
이러한 격리는 오랫동안 linux 에 있었던 커널 네임스페이스와 cgroup 을 활용한다. Docker 는 이러한 기능을 접근하기 쉽고 사용하기 쉽게 만든다. 요약하자면 컨테이너는 다음을 수행한다.
도커 이미지란 컨테이너를 정의하는 읽기 전용 템플릿이다. 이 이미지에는 코드에 필요한 라이브러리, 종속성에 대한 정의, 실행되는 코드가 포함되어 있다. 이런 도커 이미지가 인스턴스화된 것이 바로 도커 컨테이너이다.
https://ajdkfl6445.gitbook.io/study/devops/docker/basic-command
https://docs.docker.com/get-started/overview/