docker : 기본 개념 정리

김용재·2024년 9월 4일

모든 처음배우는 개념이 그렀듯이 큰 맥락이 있고 맥락에서 생겨나는 개념들이 서로 유기적으로 연결되어있다.
도커를 처음에 이해하긴 어려웠는데 맥락을 크게 이해한 뒤 큰 맥락에서 필요한 단어의 개념들을 서로 유기적으로 이해해보니 어느정도 이해가 되었다.

모든 새로운 개념은 불편함에서 비롯된 것들이 대부분이다.
도커도 그러하다.

docker

docker를 어떠한 플랫폼이라고 이해하면 쉽다. Virtual machine 같은 pc내에서 독립적으로 실행되는 환경인데 vm과 결정적 차이는 host(사용자의 pc)의 커널을 함께 사용한다.
도커를 큰 맥락으로 이해할 때 이미지 , 컨테이너 , 볼륨을 각각 이해하면 좋다.
docker의 결정적인 특징은 경량성 ,이식성 ,확장성이다. 아래에 각각에 개념을 이해한 뒤 왜 특징이 이러한지 다시 이해해보자.

이미지

개발을 완료하고 EC2와 같은 서버내에 배포하기 위해선 여러가지 환경변수나 db, jdk와 같은 것들을 서버내에 다시 설치해줘야 한다. 이런것들을 한번에 모아서 설치해줄 수 있는것이 docker의 이미지 개념이다.
이미지 내에 이런 저런 세팅을 하겠다고 명시를 한 파일이 docker 파일이다.

컨테이너

실제로 큰 화물선들은 컨테이너를 사용하여 물건을 옮긴다. 일반적으로 컨테이너 안에는 관련된 물건들만 들어있다.
이처럼 docker에서 부르는 컨테이너 또한 관련된 것들만 모아놓은 요소라고 보면 된다.
화물선들이 컨테이너가 여러개이듯 docker에서도 컨테이너를 여러개 다룰 수 있다.
이미지를 인스턴스화 해서 실행한 것이 컨테이너이다. 이건 마치 클래스와 객체의 개념과 같다.

개발을 완료한 어떤 웹 어플리케이션이 있을 때 클라이언트는 보통 port를 통해 접근하게 되는데
port 번호에 따라서 다른 환경으로 보내줄 때 매우 용이하다. 왜냐하면 컨테이너를 여러개 다룰 수 있기 때문이다.

볼륨

컨테이너가 가진 데이터나 환경변수등을 저장할 공간이 볼륨이다. 도커는 pc내에서 커널을 공유하는 가상환경이라고 했는데 pc내 어느 장소를 마운트하여 볼륨을 사용할 수 있다. 컨테이너가 사라져도 볼륨은 사라지지 않는다. 왜냐하면 볼륨은 host 내에 저장공간을 함께 쓰고 있기 때문에 host 내 이 공간을 삭제하지 않으면 사라지지 않는다.

도커의 특징

경량성

Docker 컨테이너는 가상 머신에 비해 매우 경량적이다. 컨테이너는 호스트 시스템의 커널을 공유하며, 필요한 것들만 포함하는 이미지로 실행되기 때문에, 자원 소모가 적고 빠르게 시작할 수 있다
이로 인해 한 시스템에서 다수의 컨테이너를 동시에 실행할 수 있다.
새롭게 배포해야하는 상황에서 도커의 이 경량성 덕분에 큰 이점을 가진다.

이식성

Docker 이미지는 어디서든지 동일하게 실행될 수 있도록 설계되었.
이미지에 애플리케이션과 필요한 모든 라이브러리, 종속성을 포함하기 때문에, 개발 환경, 테스트 환경, 프로덕션 환경에서 동일한 방식으로 동작한다.
이는 "한 번 빌드하면 어디서든 실행"할 수 있다는 장점을 제공한다.

확장성

Docker는 확장성이 뛰어나 여러 컨테이너를 쉽게 관리할 수 있다.
이를 통해 마이크로서비스 아키텍처를 구현하거나, 대규모 애플리케이션을 쉽게 확장하고 관리할 수 있다.

profile
멋진 내가 되기 위한 발걸음

0개의 댓글