도커
컨테이너라는 경량 단위로 앱을 실행하는 기능을 제공하는 플랫폼이다.
도커의 필요성
- 한 시스템을 구성하는 앱들이 요구하는 실행환경이 제각각이기 때문에 서버구축에 어려움이 생긴다.
- 환경을 바꿀 때(클라우드로 이주 등)에도 비용이 발생한다.
가상화
실제의 컴퓨터 자원(CPU, 메모리 등)을 나누거나 묶어 논리적 형태로 나타내는 기술.
호스트OS 혹은 하이퍼바이저 위에 가상머신을 구현한다.
컨테이너
호스트 OS의 자원을 논리적으로 분리시켜 구획을 만들고, 앱 작동을 위한 라이브러리나 앱 등을 구획 안에 모아서 별도 서버처럼 사용하는 기술. 또는 그 구획.
기존의 가상화에 비해 오버헤드가 작아서 가볍고 빠르다.
도커는 LXC(리눅스컨테이너)에서 시작했으나 이제는 LXC에 전적으로 의존하진 않는다.
주요 개념
컨테이너 docker container
앱이 실행되는 독립적인 환경. 도커가 관리하는 가상 리소스(호스트이름, 파일시스템 등)을 가진다.
이미지로부터 생성된다.
이미지 docker image
컨테이너를 구성할 파일시스템과 앱 설정을 합친 것.
컨테이너를 생성할 때 사용된다.
Docker Hub 등의 저장소를 통해 공유하거나, 남의 이미지를 받아 쓸 수 있다.
Dockerfile 파일에 작성한 스크립트로부터 생성된다.
볼륨 docker volume
컨테이너완 독립적으로 존재하는 스토리지. 컨테이너에 연결하여 컨테이너 파일시스템의 한 디렉토리로 삼을 수 있다.
컴포즈 docker compose
도커 컨테이너 여러 개를 묶어 관리하고 실행하는 도구.
docker-compose.yml 파일 안에 각 컨테이너와 컨테이너 간 네트워크, 볼륨 마운트, 환경변수 등을 설정한다.
예를 들어 웹 어플리케이션을 개발할 때 백엔드 서버, 프론트엔드 서버, DB 등의 여러 서비스를 도커 컴포즈를 이용하여 한 번에 실행하고 관리한다.
주요 기능
- 이미지 만들기
- 이미지 공유하기
- 컨테이너 실행
…
- 모놀리식(Monolithic): 앱의 모든 구성요소가 한 프로젝트에 통합된 서비스 구조. 도커 배경 설명하면서 이 단어 꼭 나오는데 난 처음봤어서 여기 적음.
참고
- 「도커 교과서」 엘튼 스톤맨 지음 / 심효섭 옮김 / 길벗 출판 (이책강추!!)
- 「Rocky Linux 8로 Docker 핵심 이해하기」 백승찬, 박지안, 정성재 지음 / 북스홀릭 출판
728x90