[백엔드] 찬찬히 살펴보는 Docker - Local/Docker hub의 상호작용

Hyo Kyun Lee·2025년 9월 23일
0

백엔드

목록 보기
18/26

1. 개요

지금까지 Docker 개념이 자리잡지 못한 채로 개발을 진행하다보니 헷갈리는 부분도 많고, 어떠한 필요에 의해 Docker를 사용하는지 정확히 인지한지 못한 채 흐르는 파도에 몸을 맡긴 상황인 것처럼 개발자답지 못한 개발을 진행하였다.

개인 프로젝트 겸 학습을 진행하면서 Docker에 대해 찬찬히 살펴보고, 나아가 Docker의 기본 개념을 정확히 숙지하고 이해하면서 기록한 내용들을 정리한다.

2. Docker

도커는 클라우드 환경에 저장되어 있는 특정 파일을 로컬 혹은 어느 장소에 옮겨주어 가상의 실행 환경, 즉 컨테이너를 동작해주는 프로그램이다.

해당 특정 파일에는 컨테이너로 실행하여 그 환경을 구성하는 여러 정보들이 담겨져 있다고 보면 되겠다.

넓은 의미로는 특정 환경을 물리적 설치 및 환경 구성이 아닌 논리적 구성을 통해 구현해내는 프로그램이며, 좁은 의미로는 가상환경 동작 프로그램이라 할 수 있겠다.

여기까지는 나의 생각이고, 표준적인 의미는 단일 컨테이너를 실행하고 다루기 위해 이에 대한 기능을 제공해주는 컨테이너 런타임이다.

3. local Docker와 Docker Hub(Docker Repository)의 상호작용

Docker는 사실 의미를 이해하는 것 보다, image를 pull하여 로컬에 저장하기까지 로컬과 Docker Hub의 상호작용을 이해하는 것이 더 중요하다.

Docker의 사전적 개념을 이해하는 것은 그 다음부터이다.

이를 간단하게 정리하면,

  • 도커가 공식적으로 운용하는 원격지 클라우드 환경인 Docker Hub에는 수많은 이미지 파일(특정 환경 정보를 담고있는)이 존재하고, 이 이미지 파일을 image pull하여 로컬에서 사용할 수 있도록 위치해주는 것이 핵심이다.

  • image pull을 한다는 것은, Docker Hub에 있는 image 파일을 "실제 로컬 환경"으로 다운로드한다는 과정이며 이는 실제 "물리적 공간"에 담긴다.
  • 이후 pull받은 image를 "컨테이너"가 실행하여, 해당 환경정보를 담고있는 이미지 그대로 "특정 환경 구성"이 가능해진다.

4. image / container

기본적으로 1이미지에서 여러개의 container를 실행할 수 있고, 이것을 "여러개의 container들이 같은 이미지 레이어를 공유한다"고 표현한다.

이때 여러 컨테이너가 하나의 이미지를 공유하고 있기에, 이미지 복제가 필요없으므로 디스크 효율의 개념이 여기서 발생한다.

하나의 container에서 여러 image를 실행할 수 있는 것은 아니다. 이 개념은 K8S(쿠버네티스)로 확장하여 이해하도록 한다.

5. 쿠버네티스 개념으로의 확장

하나의 container위에 여러 이미지를 실행할 수 있다는 개념은 Docker가 아닌 쿠버네티스이다.

정확하게는 1POD(포드, 여러 컨테이너를 실행하는 최소한의 실행 단위), 1POD에서는 여러 container를 실행할 수 있다.

컨테이너 런타임이 도커의 실체라면, 다수의 컨테이너 실행을 관리하기 위한 컨테이너 오케스트레이션의 일종이 바로 쿠버네티스이다.

이 내용에서는 해당 쿠버네티스의 개념을 깊게 다루지는 않지만, 이 개념을 추후 확장하기 위해 "기본적인 개념"으로 알아두고 있도록 한다.

0개의 댓글