You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »


도메인 경로를 각각의 도커에 할당하기 위한 최소 구성도


복수개의 도커에 다양한 도메인이 할당되어 도커에 접근이 되어야하기때문에 , 라우팅을 잘 관리하는 것은 중요한요소입니다.

접근과정 : 도메인 → 공유기 → 포트포워딩 → VMOS → PROXY → 도커 인스턴스

홈 네트워크라고, 하면 위와같은 순서로 도커가 제공하는 서비스에 접근을 할것이며, 

VMOS에 유입되는 Endpoint를 패턴별로 ,  Proxy(Nginx)를 통해 도커 인스터로 유도해야할것입니다.


Rancher 에서 복수개의 컨테이너 관리를 할수 있지만,  도메인 규칙에따라 컨테이너에 연결하는 기능은 포함되어 있지않습니다.

로드 밸런싱이 포함하여 이러한 기능은 하드웨어 혹은 소프트웨어 레벨에서 처리할수 있으며  (  하드웨어 레벨 L5 , 소프트웨어 레벨 L7 으로 구분되기도 한다.) 

L5에 대표적인 솔류션으로 BigIP가 있으며 L7에는 Nginx/Haproxy 등이 있다. AWS에서는 ELB 가 제공되기도 한다.


여기서는 온프레미스에서 소규모 네트워크이기때문에 Nginx 에 Admin기능을 입힌 Nginx Proxy Manager를 사용할것이다.

소규모 개발환경에서도 Proxy가 중요한 이유는 ,먼저 Proxy관리가 없는 환경을 생각해보자

  • 도메인 설정이 산발적으로 되어,그룹단위 개발환경의 전체 레이아웃을 볼수가 없다. -Bad
  • 개발 도메인 신청에서 빌드업까지 개발시간보다 더 긴시간이 사용됨 - Bad
  • 관리가 어렵다고 해서, 도메인 개발환경을 포기한 경우,  그냥 Ip:port기반으로 제공하고 Hostfile을 통한 QA- Too Bad

Nginx Proxy Manager

  • 인입되는 도메인의 패턴(PROXY감지)에 따라 특정 IP로(도커 컨테이너) 유도 


version: '2'
services:
  nginx:
    image: jlesage/nginx-proxy-manager
    restart: always
    volumes:
      - /docker/appdata/nginx-proxy-manager:/config:rw
    ports:
      - 8080:8181/tcp
      - 8081:8080/tcp
    labels:
      io.rancher.scheduler.affinity:host_label: server=main
      io.rancher.container.hostname_override: container_name

초기 계정

더자세한 기능 참고 : https://github.com/jlesage/docker-nginx-proxy-manager


위 도커 슼크립트를 추가하게 되면, Rancher에서 server가 main 인 인스턴스 한곳에 proxy 서버가 구동되게 된다.









  • No labels