만약 개발을 마치고 나서 배포를 하려는데, 서버로 이용되는 컴퓨터에 깔려있는 개발 도구들의 버전이 개발용 컴퓨터와 맞지 않는다면 버전을 다 맞춰야 한다.
➡️ 서버의 환경 맞춤 문제가 생길 수 있다.
도커의 컨테이너 를 활용하면, 이 환경을 효율적으로 관리할 수 있다.
도커란?
도커는 컨테이너 기반의 오픈소스 가상화 플랫폼이다.
컨테이너 📦 라고 하면 박스를 생각할 수 있는데, 말 그대로 프로그램과 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공해서 프로그램의 배포 및 관리를 단순하게 해준다.
기존의 가상화 방식: OS 가상화
기존에는 버츄얼 박스라던가 VMware같은 가상머신은 호스트 os 위에 게스트 os 전체를 가상화하여 사용했다.
하지만 이 방식은 무거워서 운영 환경에선 사용할 수 없었다.
무거움을 개선하기 위해 CPU의 가상화 기술을 이용한 반가상화 방식이 등장했다. 이 기술은 OpenStack, AWS와 같은 클라우드 서비스에서 가상 컴퓨팅 기술의 기반이 되었다.
하지만, 반 가상화하는 방식도 문제가 있었고 프로세스를 격리하는 방식이 나오게 된다.
프로세스를 격리하는 방식은 메모리나 CPU에 무리가 없어서 가볍고 빠르게 동작한다.
도커의 컨테이너: 프로세스 격리
도커의 컨테이너는 이미지로 컨테이너를 생성하면 해당 이미지 목적에 맞는 파일이 들어있는 파일 시스템과 격리된 시스템 자원 및 네트워크를 사용할 수 있는 독립적인 공간이다.
- 도커는 하나의 컨테이너를 독립적인 존재로 본다.
- 갑자기 한 어플리케이션의 트래픽이 증가되었을 때, 컨테이너를 늘리면 된다. 반대로, 줄었을 때는 줄이면 된다.
- 원할 때마다 도커를 통해 새로운 환경을 생성할 수 있다.
- 서버를 사고, 환경을 다시 설정할 필요가 없어진다.
도커의 이미지
도커의 이미지는 컨테이너와 함께 중요한 개념이다.
이미지는 컨테이너 실행에 필요한 파일과 설정 값 등을 포함하고 있는 것이다.
- 이미지는 상태 값을 가지지 않고 변하지 않는다.
- 컨테이너를 생성하고 실행할 때 읽기 전용으로 사용된다.이미지의 구성[저장소 이름]/[이미지 이름]:[태그] 형태이다.
이미지와 컨테이너
- 이미지 🎆 : 컨테이너 실행을 위해 필요한 파일
- 컨테이너📦: 이미지를 실행한 상태. 추가되거나 변하는 값은 컨테이너에 저장된다.
같은 이미지에서 여러개의 컨테이너를 생성할 수 있고, 컨테이너의 상태가 바뀌거나 삭제되더라도 이미지는 변하지 않고 그대로 남아있다.
참고한 블로그들
'CS' 카테고리의 다른 글
0. 서버란 무엇인가 (0) | 2024.09.15 |
---|---|
CI/CD 에 대해서 (0) | 2023.11.07 |