Docker , VM ware , port

dongmay·2024년 5월 23일
0

Server

목록 보기
2/7


건물을 지었는데 거기에 층과 방이 구분이 되지않아서 한 회사만 사용하고 있다.
아주 비효율적이다.

그래서 층, 방을 나누는 공사를 해서 여러 가족들이 살고 회사가 들어온다. 각각의 방이 VM인것이다.
VM ware는 건물이다. 하나의 물리적인 서버로 VM을 가능하게 해준다.
각각의 VM은 자체 운영 체제, 라이브러리, 애플리케이션을 가지고 있어 마치 별도의 물리적인 컴퓨터처럼 작동한다. 한 건물에서 기업이 여러개가 각자의 비지니스를 하는것 처럼.
VM을 수정하거나 업데이트하려면 전체 게스트 운영 체제를 다시 설정해야 하므로 시간과 자원이 많이 소모된다.

반면 도커는 층과 방을 공사하는게 아닌 컨테이너라는 가상화 환경을 도입한다.
층과 방이 없는 건물에 미리 만들어진 컨테이너를 쌓아올린다. 회사(컨테이너)가 공사를 하거나 방을 뺄때 그냥 회사(컨테이너)자체를 젠가처럼 들어내거나 주변 간섭없이 수정,업데이트가 가능하단 것이다.

예를들어 내가 웹프로젝트를 aws를 통해서 DB,Api Server, WebServer를 각각 도커로 컨테이너로만들어서 배포한다고 치자.

컨테이너로 만들어진 각 서버는 배포할때 컨테이너 오케스트레이션이라는 시스템을 통해서 배포가 가능하다. 여러 컨테이너들이 오케스트라처럼 합주한다는 뜻인데, 대표적으로 amazon ecs,eks, 쿠버네티스가 있다.
어쨋든 그렇게 배포를 해서 서버컴퓨터에 내 컨테이너들이 들어가서 살게 될텐데 IP주소는 서버컴퓨터(건물)이되고 내 컨테이너는 들어가서 각자 방에 입주했으니깐 호실을 받게되는데 그게 port인것이다.

내가 배포한 서비스의 건물이름(가상서버 IP주소) 가 203.0.113.1이 할당되어 있다고 가정해보자. 세개의 docker 컨테이너를 배포했으니깐 각각 이렇게 배정받았다고 예를 들자.

웹 서버 컨테이너: 포트 80
API 서버 컨테이너: 포트 8000
데이터베이스 컨테이너: 포트 3306

그리고 사용자가 웹 브라우저에서 203.0.113.1:80에 접속하면 웹 서버 컨테이너에 도달하고, 203.0.113.1:8000에 접속하면 API 서버 컨테이너에 도달하게 되는것이다.
이러한 방식으로 하나의 서버에서 다수의 컨테이너를 실행할 수 있으며, 포트를 통해 각 컨테이너에 접근할 수 있다. 이를 컨테이너 포트 매핑이라고 한다.

당연히 웹브라우저에 ip주소를 쳐서 들어가는 사용자는 아무도 없을것 이다!
사용자는 www.dongmay.com(Domain)을 사용하여 접속을 할것 이다.
이 과정을 설명하려면 DNS(Domain Name System)의 이해가 필요하다.
DNS는 인터넷 전화번호부이다.
전화번호부(DNS)서비스에는 식당(Domain, www.dongmay.com) -> 전화번호(203.0.113.1)로 변환되는 서비스를 제공한다.
그리고 해당 IP의 컨테이너에 매핑되어있는 Port를 찾아서 요청을 받아들이고 연결된다.
사용자가 http://www.dongmay.com을 브라우저에 검색하면 이러한 과정이 발생한다.(http는 80, https는 443 port사용)

profile
Dongmay_engawa

0개의 댓글