웹사이트 검색

CentOS 8에서 Docker를 사용하여 역방향 프록시로 Traefik을 설치하고 사용하는 방법


이 페이지에서

  1. 전제 조건
  2. Docker 및 Docker Compose 설치
  3. Docker 네트워크 만들기
  4. Traefik 프록시 설치 및 구성\n
  5. Docker Compose 파일 생성
  6. Traefik Docker 컨테이너 구축
  7. Traefik 웹 인터페이스 액세스
  8. 결론

Traefik은 마이크로서비스를 쉽게 배포하는 데 도움이 되는 오픈 소스 HTTP 리버스 프록시 및 로드 밸런서입니다. Docker, Kubernetes, Docker Swarm, Rancher, AWS 등을 포함한 인프라 구성 요소와 쉽게 통합할 수 있습니다. 동일한 Docker 호스트에서 여러 애플리케이션을 실행하려는 경우 Traefik을 리버스 프록시로 사용하여 포트 80 및 443을 나머지 세계에 노출할 수 있습니다.

이 튜토리얼에서는 CentOS 8에서 역방향 프록시로 Traefik을 설치하고 구성하는 방법을 보여줍니다.

전제 조건

  • CentOS 8을 실행하는 서버.\n
  • 서버 IP를 가리키는 유효한 도메인 이름입니다.\n
  • 루트 암호는 서버에 구성됩니다.\n

Docker 및 Docker Compose 설치

먼저 최신 버전의 Docker 및 Docker Compose를 시스템에 설치해야 합니다. 기본적으로 Docker는 CentOS 8 기본 리포지토리에서 사용할 수 없습니다. 따라서 시스템에 Docker CE 리포지토리를 추가해야 합니다. 다음 명령으로 추가할 수 있습니다.

dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

리포지토리가 생성되면 다음 명령을 사용하여 Docker CE를 설치합니다.

dnf install docker-ce --nobest -y

Docker가 설치되면 Docker 서비스를 시작하고 다음 명령을 사용하여 시스템 재부팅 시 시작되도록 활성화합니다.

systemctl start docker
systemctl enable docker

Docker Compose를 설치하려면 Curl을 설치하고 시스템에 Docker Compose 바이너리를 다운로드해야 합니다. 다음 명령으로 수행할 수 있습니다.

dnf install curl
curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

도커 네트워크 만들기

다음으로 traefik 컨테이너를 실행할 새 Docker 네트워크를 생성해야 합니다. 다음 명령을 실행하여 "web"이라는 이름으로 만들 수 있습니다.

docker network create web

다음으로 다음 명령을 사용하여 네트워크를 확인합니다.

docker network ls

다음과 같은 결과가 표시되어야 합니다.

NETWORK ID          NAME                DRIVER              SCOPE
76a9475e5ab0        bridge              bridge              local
2a3d79f64747        host                host                local
4c9123229eaa        none                null                local
0b6e010b43d0        web                 bridge              local

Traefik 프록시 설치 및 구성

시작하기 전에 httpd-tools를 설치하여 암호화된 비밀번호를 생성해야 합니다. 다음 명령을 사용하여 이 도구를 설치할 수 있습니다.

dnf install httpd-tools -y

설치가 완료되면 다음 명령을 사용하여 암호화된 비밀번호를 생성하십시오.

htpasswd -nb admin my_password

다음 출력이 표시되어야 합니다.

admin:$apr1$wpdR.4yZ$UpbjGS7ZFq4pZHalhH1Tl0

다음으로 다음 명령을 사용하여 새 Traefik 구성 파일을 만듭니다.

nano traefik.toml

유효한 도메인 이름, 보안 암호 및 포트를 포함하여 다음 줄을 추가합니다.

defaultEntryPoints = ["http", "https"]

[entryPoints]
  [entryPoints.dashboard]
    address = ":8080"
    [entryPoints.dashboard.auth]
      [entryPoints.dashboard.auth.basic]
        users = ["admin:$apr1$wpdR.4yZ$UpbjGS7ZFq4pZHalhH1Tl0"]
  [entryPoints.http]
    address = ":80"
      [entryPoints.http.redirect]
        entryPoint = "https"
  [entryPoints.https]
    address = ":443"
      [entryPoints.https.tls]

[api]
entrypoint="dashboard"

[acme]
email = ""
storage = "acme.json"
entryPoint = "https"
onHostRule = true
  [acme.httpChallenge]
  entryPoint = "http"

[docker]
domain = "traefik.linuxbuz.com"
watch = true
network = "web"

완료되면 파일을 저장하고 닫습니다. 그런 다음 Let’s Encrypt 정보를 저장할 빈 파일을 만듭니다.

touch acme.json

그런 다음 다음 명령을 사용하여 이 파일에 적절한 권한을 부여합니다.

chmod 600 acme.json

Docker Compose 파일 생성

다음으로 새 docker-compose.yml 파일을 만들고 도메인, 포트, 네트워크 및 볼륨을 정의해야 합니다.

다음 명령으로 만들 수 있습니다.

nano docker-compose.yml

다음 줄을 추가합니다.

version: '3'

services:

  traefik:
    image: traefik:1.7.21-alpine
    command: --docker --docker.domain=linuxbuz.com
    ports:
      - 80:80
      - 443:443
    networks:
      - web
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./traefik.toml:/traefik.toml
      - ./acme.json:/acme.json
    labels:
      - "traefik.frontend.rule=Host:traefik.linuxbuz.com"
      - "traefik.port=8080"
    container_name: traefik
    restart: always

networks:
   web:
    external: true

완료되면 파일을 저장하고 닫습니다.

Traefik Docker 컨테이너 빌드

이 시점에서 Traefik 및 Docker Compose 구성 파일이 준비되었습니다. 이제 다음 명령을 사용하여 Traefik 컨테이너를 빌드합니다.

docker-compose up -d

다음 출력이 표시되어야 합니다.

Unable to find image 'traefik:1.7.21-alpine' locally
1.7.21-alpine: Pulling from library/traefik
c9b1b535fdd9: Pull complete 
c141e361698e: Pull complete 
2573c02b6f16: Pull complete 
1619fb3841d1: Pull complete 
Digest: sha256:0e4ac8ae724603898620dbd5eb9cda7ec05f405d25476eb0d32b716b490ba079
Status: Downloaded newer image for traefik:1.7.21-alpine
27e735357bb3b7d2d253ff78ddf6e78896851420eff399e8ade23affc7ff0bf7

다음으로 다음 명령을 사용하여 실행 중인 컨테이너를 확인합니다.

docker ps

다음 출력이 표시되어야 합니다.

CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                                      NAMES
7604696507a5        traefik:1.7.21-alpine   "/entrypoint.sh --do…"   6 seconds ago       Up 4 seconds        0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   traefik

Traefik 웹 인터페이스에 액세스

이제 웹 브라우저를 열고 URL https://traefik.linuxbuz.com을 사용하여 Traefik 웹 인터페이스에 액세스하십시오. 사용자 이름과 비밀번호를 입력하라는 메시지가 표시됩니다.

이전에 생성한 관리자 이름과 비밀번호를 제공하고 로그인 버튼을 클릭합니다. 다음 화면에 Traefik 대시보드가 표시되어야 합니다.

건강 탭을 클릭하십시오. 다음 화면에서 Traefik 컨테이너의 상태를 확인해야 합니다.

결론

축하합니다! CentOS 8에 Traefik 프록시를 성공적으로 설치했습니다. 자세한 내용은 Traefik 설명서를 참조하십시오.