Docker 가이드 · 4 min read · Feb 05, 2026

Docker 가이드: Traefik 설치 - 마이크로서비스를 위한 현대적인 리버스 프록시

Traefik은 마이크로서비스를 위한 현대적인 HTTP 리버스 프록시 및 로드 밸런서입니다. Traefik은 Docker, Swarm 모드, Kubernetes, Amazon ECS, Rancher, Etcd, Consul 등과 같은 기존 인프라 구성 요소와 통합되어 모든 마이크로서비스 배포를 쉽게 만듭니다.

Traefik은 모든 마이크로서비스 애플리케이션의 라우터 역할을 하며, 모든 클라이언트 요청을 올바른 마이크로서비스 대상으로 라우팅합니다.

이 튜토리얼에서는 Ubuntu 18.04 LTS (Bionic Beaver)에서 Docker 컨테이너로 Traefik 현대 리버스 프록시를 설치하고 구성하는 방법을 단계별로 보여드리겠습니다.

전제 조건

  • Ubuntu 18.04
  • 루트 권한

우리가 할 일은?

  1. Ubuntu 18.04에 Docker 설치
  2. Docker Compose 설치
  3. 사용자 정의 Docker 네트워크 생성
  4. Traefik 설치 및 구성
  5. 테스트

1단계 - Ubuntu 18.04에 Docker 설치

이 가이드에서는 공식 Docker 저장소에서 설치할 수 있는 최신 Docker 버전을 사용할 것입니다.

아래 명령어를 사용하여 Docker 키와 저장소를 추가합니다.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -  
sudo add-apt-repository \  
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \  
   $(lsb_release -cs) \  
   stable"

‘add-apt-repository’ 명령어는 모든 저장소를 자동으로 업데이트합니다.

Ubuntu에 Docker 설치

이제 최신 docker-ce를 설치합니다.

sudo apt install docker-ce

설치가 완료되면 Docker 서비스를 시작하고 시스템 부팅 시마다 시작되도록 활성화합니다.

systemctl start docker  
systemctl enable docker

Docker 커뮤니티 에디션이 Ubuntu 18.04 시스템에 설치되었습니다. 설치된 Docker 버전을 확인합니다.

docker version

Docker 버전 확인

추가: 비루트 사용자로 Docker 실행

Docker 컨테이너는 비루트 사용자로 실행할 수 있습니다. 사용자를 Docker 그룹에 추가하기만 하면 됩니다.

‘mohammad’ 사용자를 추가합니다.

useradd -m -s /bin/bash mohammad

이제 ‘mohammad’ 사용자를 Docker 그룹에 추가한 후 Docker 서비스를 재시작합니다.

usermod -a -G docker mohammad  
systemctl restart docker

Docker hello-world를 실행하여 테스트합니다.

docker run -it hello-world

그리고 다음은 결과입니다.

비루트 사용자로 Docker 실행

2단계 - Docker Compose 설치

Docker-Compose는 다중 컨테이너 Docker 애플리케이션을 정의하고 관리하기 위한 명령줄 도구입니다.

Docker Compose는 Python 스크립트이며, Python pip 명령어 또는 Ubuntu 저장소의 apt 명령어로 쉽게 설치할 수 있습니다. Compose를 사용하면 단일 명령으로 여러 Docker 컨테이너를 실행할 수 있습니다.

아래의 apt 명령어를 사용하여 저장소에서 Docker Compose를 설치합니다.

sudo apt install docker-compose

설치가 완료되면 Docker Compose 버전을 확인합니다.

docker-compose version

Docker Compose 1.17이 Ubuntu 18.04에 설치되었습니다.

Docker Compose 설치

3단계 - 사용자 정의 Docker 네트워크 생성

이 튜토리얼에서는 Traefik 컨테이너가 Docker 사용자 정의 네트워크에서 실행됩니다. 따라서 서버에 새로운 Docker 사용자 정의 네트워크를 생성해야 합니다.

시스템에서 사용 가능한 Docker 네트워크를 확인합니다.

docker network ls

이제 Traefik 컨테이너를 위한 ‘proxy’라는 이름의 새로운 사용자 정의 네트워크를 생성합니다.

docker network create proxy

그리고 네트워크 컨테이너 이름의 무작위 문자열을 받게 됩니다. 사용 가능한 네트워크를 다시 확인합니다.

docker network ls

아래는 결과입니다.

사용자 정의 Docker 네트워크 생성

Traefik을 위한 ‘proxy’라는 이름의 사용자 정의 Docker 네트워크가 생성되었습니다.

4단계 - Traefik 리버스 프록시 설치 및 구성

이 단계에서는 HTTPS letsencrypt가 활성화된 Traefik 컨테이너를 생성하고 (도메인 이름 ‘traefik.hakase-labs.io’ 사용), Traefik에서 HTTP를 HTTPS로 자동으로 리디렉션합니다.

Traefik 사전 설치

모든 Traefik 구성을 생성하기 전에 암호화된 htpasswd 비밀번호를 생성하고 새로운 Traefik 디렉토리를 만들기 위해 ‘apache2-utils’를 설치해야 합니다.

아래의 apt 명령어를 사용하여 ‘apache2-utils’를 설치합니다.

sudo apt install apache2-utils -y

이제 아래의 htpasswd 명령어를 실행하여 Traefik 대시보드 인증을 위한 새로운 비밀번호를 생성합니다.

htpasswd -nb mohammad password

결과를 메모해 두십시오.

mohammad:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi.

Traefik 리버스 프록시 설치 및 구성

다음으로 ‘mohammad’ 사용자로 로그인합니다.

su - mohammad

모든 Traefik 구성을 위한 ‘traefik’이라는 이름의 새로운 디렉토리를 생성합니다.

mkdir -p traefik/  
cd traefik/

Traefik 구성 생성

‘ traefik’ 디렉토리로 이동하여 vim 편집기를 사용하여 새로운 구성 파일 ‘traefik.toml’을 생성합니다.

cd traefik/  
vim traefik.toml

아래 구성을 붙여넣습니다.

#Traefik Global Configuration
debug = false
checkNewVersion = true
logLevel = "ERROR"

#Define the EntryPoint for HTTP and HTTPS
defaultEntryPoints = ["https","http"]

#Enable Traefik Dashboard on port 8080
#with basic authentication method
#mohammad and password
[web]
address = ":8080"
[web.auth.basic]
users = ["mohammad:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi."]

#Define the HTTP port 80 and
#HTTPS port 443 EntryPoint
#Enable automatically redirect HTTP to HTTPS
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]

#Enable retry sending a request if the network error
[retry]

#Define Docker Backend Configuration
[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "traefik.hakase-labs.io"
watch = true
exposedbydefault = false

#Letsencrypt Registration
#Define the Letsencrypt ACME HTTP challenge
[acme]
email = "[email protected]"
storage = "acme.json"
entryPoint = "https"
OnHostRule = true
  [acme.httpChallenge]
  entryPoint = "http"

저장하고 종료합니다.

참고:

구성에 대한 모든 정보는 주석 섹션 ‘#…‘에 있습니다.

Traefik Docker Compose 스크립트 생성

이제 docker-compose yml 스크립트를 생성합니다.

vim docker-compose.yml

아래 구성을 붙여넣습니다.

version: '3'

services:

  traefik:
    image: traefik:latest
    command: --docker --docker.domain=hakase-labs.io
    ports:
      - 80:80
      - 443:443
    networks:
      - proxy
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./traefik.toml:/traefik.toml
      - ./acme.json:/acme.json
    labels:
      - "traefik.frontend.rule=Host:traefik.hakase-labs.io"
      - "traefik.port=8080"
    container_name: traefik
    restart: always

networks:
  proxy:
    external: true

저장하고 종료합니다.

참고:

  1. ‘traefik:latest’ Docker 이미지를 기반으로 ‘traefik’이라는 이름의 새로운 컨테이너를 생성하고 있습니다.
  2. ‘traefik’ 컨테이너는 ‘proxy’라는 이름의 사용자 정의 Docker 네트워크에서 실행되며 외부 포트 HTTP 80 및 HTTPS 443을 노출합니다.
  3. 컨테이너는 Traefik 구성 ‘traefik.toml’ 및 ‘acme.json’을 포함하여 Docker sock 파일을 마운트합니다.
  4. Traefik에 대한 레이블 구성, 프론트엔드 도메인 이름 및 Traefik 포트.

Letsencrypt ACME 구성

‘traefik.toml’의 acme 구성은 SSL letsencrypt를 자동으로 생성하는 데 사용됩니다. 그리고 ‘acme.json’ 저장 파일이 필요합니다.

새로운 JSON 파일 ‘acme.json’을 생성하고 권한을 ‘600’으로 변경합니다.

touch acme.json  
chmod 600 acme.json

SSL letsencrypt 정보에 대한 모든 로그는 파일에 저장됩니다.

Traefik 컨테이너 빌드

이제 위의 구성 파일을 사용하여 Traefik 컨테이너를 빌드할 준비가 되었습니다.

cd traefik/  
ls -lah

모든 구성 ‘traefik.toml’, ‘docker-compose.yml’, 및 ‘acme.json’ 파일.

Traefik 컨테이너 빌드

아래의 Docker Compose 명령어를 사용하여 컨테이너를 빌드합니다.

docker-compose up -d

완료되면 실행 중인 컨테이너를 확인합니다.

docker-compose ps

그리고 Traefik 컨테이너가 실행 중이며 외부 포트 HTTP 및 HTTPS를 노출하고 있음을 확인할 수 있습니다.

5단계 - 테스트

웹 브라우저를 열고 주소 표시줄에 Traefik 도메인 이름을 입력합니다. 제 도메인은:

http://traefik.hakase-labs.io/

HTTPS 연결로 리디렉션되며 사용자 이름과 비밀번호 인증을 요청받습니다.

사용자 ‘mohammad’로 로그인하고 비밀번호는 ‘password’입니다.

그리고 아래와 같은 Traefik 대시보드를 보게 됩니다.

Traefik 대시보드

Traefik 건강 상태 페이지.

Traefik 건강 상태 페이지

Traefik 현대 HTTP 리버스 프록시가 Ubuntu 18.04에 Docker 컨테이너로 설치되었습니다.

참고

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.