컨테이너 방식의 장점
1. 의존성 충돌 문제를 해결해준다.
어떤 프로그램을 실행할 때 다른 프로그램이 반드시 필요한 경우 프로그램 A는 프로그램 B에 의존 관계를 가지고 이다고 말한다. 프로그램마다 의존하는 프로그램의 버전이 다르거나 하는 경우 의존성 충돌의 문제가 발생할 수 있습니다.
컨테이너에서 실행 중인 애플리케이션은 어떠한 의존성도 공유하지 않고 각각의 고유하 의존성을 포함하고 있습니다. 이는 각 컨테이너가 철저하게 실행환경이 격리되어 있기 때문이다.
컨테이너가 격리할 수 있는것
프로세스
- 특정 컨테이너에서 작동하는 프로세스는 기본적으로 그 컨테이너 안에서만 액세스할 수 있습니다.
- 컨테이너 안에서 실행되는 프로세스는 다른 컨테이너의 프로세스에게 영향을 줄 수 없습니다.
네트워크
- 기본으로 컨테이너 하나에 하나의 IP 주소가 할당되어 있습니다.
파일 시스템
- 컨테이너 안에서 사용되는 파일 시스템은 구획화되어 있습니다. 그래서 해당 컨테이너에서의 명령이나 파일 등의 액세스를 제한할 수 있습니다.
개발과 배포 환경을 일치시킨다.
docker를 활용하면 개발자는 호환에 버전이나 호환에 상관없이 프로그램을 즉시 실행할 수 있다.
docker run --name postgres -e POSTGRES_PASSWORD=mysecret -d postgres
애플리케이션 구성 자체가 컨테이너화되면 YAML 파일 하나 + 명령어 하나로 모든 애플리케이션 실행 환경 구성이 완료되는 기적을 볼 수 있습니다.
docker-compose up
배포 시의 문제
웹 서비스의 배포란 "어떤 애플리케이션이 특정 런타임 환경 위에서 실행되고, 사용자에게 이를 제공한다"의미 인데 이는 서비스를 인터넷상에 공개적으로 노출하느냐, 내 컴퓨터 상에서 프라이빗하게 작동하느냐의 차이일 뿐이다.
따라서 Amazon Web Service의 EC2 상에 도커를 설치하거나, 또는 좀 더 편리하게 도커 컨테이너를 EC2 서버에서 실행할 수 있게 하는 서비스인 ECS를 이용하여 보다 쉽게 애플리케이션을 배포할 수 있습니다.
수평 확장을 쉽게 해준다./각 서버에 새로운 내용을 배포하기 쉽게 만들어준다.
어마어마한 트래픽을 과연 한 곳 에서 다룰까요? 그렇지 않습니다.
인터넷 서비스 제공자들은 트래픽 분산을 위해 프록시 서버를 운영하며, 프록시 서버는 여러 대의 동일한 검색 서버 중 한 군데를 이용할 수 있도록 돕는다. 이러한 서버를 리버스 프록시의 한 종류인 '로드 밸런서'라고 한다.
동일한 서비스 여러 컴퓨터에서 작동할 때 실행환경의 일치가 중요한데 이때 도커를 사용한다.
동일한 애플리케이션 구성(이미지)을 바탕으로 새로운 서버에 해당 애플리케이션을 컨테이너로 실행하과, 로드 밸랜서 이 서버를 추가하기만 하면 된다.
도커 핵심 키워드
컨테이너: 애플리케이션 상자
이미지: 애플리케이션 및 앱 구성을 함께 담아놓은 템플릿. 이미지는 기본 이미지로 부터 변경사항을 추가/커밋해서 또 다른 이미지를 만들 수 있다.(도커 라이징 참고)
레지스트리: 이미지는 레지스트리에 저장. Doker Hub, Amazon ECR
'백엔드 > docker' 카테고리의 다른 글
Docker 컨테이너에 파일을 복사하기 (0) | 2022.01.07 |
---|---|
Docker CLI (0) | 2022.01.07 |