1. 포트
Port는 "논리적 접속장소"이며 인터넷 프로토콜인 TCP/IP를 사용할 때는 클라이언트 프로그램이 네트워크 상의 특정 서버 프로그램을 지정하는 방법으로 사용된다.
네트워크 상에서 통신을 할때 IP를 토대로 해당 서버가 있는 컴퓨터에 접근한다. 그런데 대부분의 경우 하나의 컴퓨터에는 여러개의 서버가 실행될 수 있다. 컴퓨터의 여러개의 서버가 실행되고 있다면, 어느 서버에 접속해야하는지 컴퓨터에 알려줄 수 있어야하며 이때 사용되는 것이 포트 번호이다.
어떠한 데이터가 송수신을 할 때 Datalink 계층에서는 호스트의 NIC로 MAC Address를 판별하고 Network 계층에서는 IP Address로 목적지를 판별한다. 이렇게 MAC Address와 IP Address를 통해 목적지 호스트에 도달한 후에는 어떤 Process에서 데이터를 받을 것인지 알아야하는데 이때 쓰이는 것이 포트 번호이다.
2. 포트 번호
포트 번호는 컴퓨터에서 실행되고 있는 서버를 구분짓기 위한 16비트의 논리적 할당이며 0~65536번(2^16)이 존재한다. 이 중 0~1023번까지는 이미 어떤 통신이 해당포트를 사용할 것인지 정해져있다. 예로 http 통신은 80번 포트, ssh 통신은 22번 포트를 사용한다. 이런 이미 정해진 포트를 well-known-port 라고 한다.
컴퓨터에 있는 웹서버는 기본적으로 80번 포트와 연결 (listening) 되어 있다. 만약 웹서버를 하나 더 사용하고 싶은 경우 80번 포트는 이미 기존 웹서버가 사용하고 있기 때문에 사용할 수 없다. 그런 경우 well-known port가 아닌 다른 포트들과 연결하여 사용한다. 보통 관습적으로 8080 포트에 연결하여 사용한다. 이런 경우 웹 통신이 들어왔을 때 80번과 8080포트 중 어떤 포트와 통신하는가?
정답은 URL에 포트번호를 적어 이를 구분한다. ex) http://test.com 은 http://test.com:80이 이 생략된 것이며 http://test.com:8080 에 접속하면 8080 포트에 연결이 된다.
3. PC & VULTR & DOCKER & PORTAINER 는 어떻게 연결되고 있는가
VULTR안의 PORTAINER CONTAINER 하나도 System이다. 여기에도 포트가 존재한다는 것이다. 가상서버(Vultr)의 포트와 portainer가 가진 포트를 연결시키는 작업이 필요하다. 이를통해 PC는 가상서버뿐 아니라 그 안의 portainer와도 통신할 수 있게 된다.
4. NGINX 컨테이너 생성
앞서 9000포트로 연결해놓은 portainer 로 접속해 Add container.
NGINX 공식 이미지를 끌어온다.
가상서버의 포트와 안에 있는 컨테이너의 포트를 연결하는 작업을 해준다. NGINX는 웹서버기 때문에 기본적으로 사용하는 포트는 80번이다. (이 컨테이너는 추후 수정할 것이므로 임시로 호스트와 컨테이너 모두 80으로 연결한다.)
이 상태로 Deploy.
'웹 프로그래밍' 카테고리의 다른 글
[배포해보기 (7)] Gunicorn (0) | 2021.06.27 |
---|---|
[배포해보기 (6)] Django container 생성 (0) | 2021.06.27 |
[배포해보기 (3)] Portainer로 Docker Container를 GUI로 생성하기 (0) | 2021.06.21 |
[배포해보기 (2)] VPS 대여 (0) | 2021.06.21 |
[배포해보기 (1)] Docker에 대하여 (0) | 2021.06.04 |