Docker를 이용한 Web Server 연결

allsilver·2021년 10월 13일
0

Docker

목록 보기
5/9
post-thumbnail

컴퓨터에는 port가 대략 6만5천개 있다.
port는 클라이언트의 요청을 어떤 소프트웨어와 연결할 지 정해주는 역할을 한다.

Docker를 이용하면 Web Server(httpd)는 OS가 아닌 Container 위에 설치(pull)된다.
Container가 설치된 운영체제(OS)를 Docker Host라고 부르며,
하나의 호스트에는 여러 개의 컨테이너가 존재할 수 있다.
컨테이너와 호스트 모두 '독립적인 실행 환경'이기 때문에, 각자 독립적인 port와 file system을 가진다.

여기서 아파치 웹 서버(httpd)는 80포트를 사용하고 있다.
이 포트 번호는 아파치 웹 서버를 개발자들이 정해놓은 포트 번호이다.

그리고, 컨테이너 내부에 웹 페이지를 파일로 만들어 저장 장치의 특정 디렉토리에 위치시켜 놓아야 한다.
이 저장 장치를 File System라 한다.

웹 서버가 설치된 컴퓨터의 주소를 'example.com'이라 해보자.

컨테이너를 실행하고,

$ docker run httpd

주소창에 example.com:80/index.html를 입력한 후 엔터를 쳐보면 접속이 될까?

정답은 아니다.
Host의 포트와 Container의 포트는 서로 연결되어 있지 않기 때문이다.

$ docker run -p 80:80 httpd
앞의 80은 Host의 포트, 뒤의 80은 Container의 포트
이렇게 연결된 포트로 신호를 전달하는 것port forwarding이라 한다.

연결되면 Host의 포트에서 Container의 포트로 요청을 보내고
Container의 포트에서 대기 중인 Web Server가 그 요청을 받는다.
Web Server는 Container 내부의 File System의 폴더에서 index.html 파일을 찾아 클라이언트에게 응답하게 된다.

profile
일단 해보는 개발자

0개의 댓글