Docker (도컀)/μ„œλ²„κ΅¬μΆ•(SSL)

11. μ„œλ²„μ— vnstat μ„€μΉ˜ (docker-compose.yml 이용)

🐾자 멍멍쌀 (λ°€ ν•˜λŠ˜ μž‘μ€ β˜…) 2022. 11. 5. 09:56
728x90
λ°˜μ‘ν˜•

μš°λ¦¬λŠ” μ•žμ—μ„œ vnstat ν”„λ‘œκ·Έλž¨μ„ docker λͺ…λ Ήμ–΄λ‘œ μ„œλ²„μ— 직접 μ„€μΉ˜ν•΄ λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

μ΄λ²ˆμ—λŠ” docker-compose.yml둜 μ„€μΉ˜ν•΄ 보도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€.

 

1.  μ§€λ‚œλ²ˆ μ‚¬μš©ν•œ docker λͺ…λ Ήμ–΄

docker run -d \
    --restart=unless-stopped \
    --network=host \
    -e HTTP_PORT=8685 \
    -v /etc/localtime:/etc/localtime:ro \
    -v /etc/timezone:/etc/timezone:ro \
    --name vnstat \
    vergoh/vnstat

 

2.  docker-compose.yml ν˜•μ‹μœΌλ‘œ λ³€ν™˜

  vnstat:
    image: vergoh/vnstat:latest
    container_name: vnstat
    restart: unless-stopped
    network_mode: "host" 
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
      - ./../../vnstatdb:/var/lib/vnstat       #βœ¨μ•„λž«μͺ½ μ„€λͺ… μ°Έμ‘°
    environment:                                
      - HTTP_PORT=8685                         # Environment variables μ„€λͺ…은
      - HTTP_BIND=*                            # https://hub.docker.com/r/vergoh/vnstat
      - HTTP_LOG=/dev/stdout                   # μ°Έκ³  
      - LARGE_FONTS=0
      - CACHE_TIME=1
      - RATE_UNIT=1
      - PAGE_REFRESH=0

✨ ./../../vnstatdb:/var/lib/vnstat  μ„€λͺ…

μ»¨ν…Œμ΄λ„ˆ μ•ˆμ˜ /var/lib/vnstat 디렉토리 λ‚΄μš©μ„ μ„œλ²„μ˜ ν˜„μž¬ λ””λ ‰ν† λ¦¬μ˜ μƒμœ„μ˜ μƒμœ„μ— vnstatdbλΌλŠ” 디렉토리와 μ—°κ²°μ‹œμΌœ 쀌. 이 μ•ˆμ— vnstat.db λΌλŠ” 파일이 있으며, 이 νŒŒμΌμ„ μ§€μš°μ§€ μ•ŠλŠ”ν•œ vnstat μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‚­μ œ ν›„ λ‹€μ‹œ μƒμ„±ν•˜λ”λΌλ„ vnstat.db에 μ €μž₯λ˜μ–΄ μžˆλŠ” 이전 기둝듀은 κ·ΈλŒ€λ‘œ μœ μ§€λ¨.

πŸ”΄ (주의) μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‚­μ œ ν›„ λ‹€μ‹œ μƒμ„±ν•˜λŠ” 경우 λ„€νŠΈμ›Œν¬ μ„€μ •κ°’ 등이 λ°”λ€Œκ²Œ λ©λ‹ˆλ‹€. 이럴 경우 www 디렉토리 밑에 μžˆλŠ” vnstatdb 디렉토리λ₯Ό μ‚­μ œ ν›„, vnstat μ»¨ν…Œμ΄λ„ˆ κΉŒμ§€ μ‚­μ œν•œ 후에 λ‹€μ‹œ μ»¨ν…Œμ΄λ„ˆλ₯Ό 생성해 μ£Όμ–΄μ•Ό μ œλŒ€λ‘œλœ 정보λ₯Ό λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.  (μ‚­μ œλŠ” root κΆŒν•œμœΌλ‘œ..)

 

3. μ΅œμ’… docker-compose.yml

version: '3.9'

services: 
  web: 
    image: nginx
    container_name: nginx_cname
    restart: unless-stopped  
    volumes:
      - ./data:/usr/share/nginx/html
    ports: 
      - "80:80"
  web2: 
    image: nginx
    container_name: nginx_cname2
    restart: unless-stopped  
    volumes:
      - ./data2:/usr/share/nginx/html
    ports: 
      - "8080:80"
  vnstat:
    image: vergoh/vnstat:latest
    container_name: vnstat
    restart: unless-stopped
    network_mode: "host"
    depends_on:                πŸ”΄ (23.01.02 μΆ”κ°€)μ•„λž˜ μ„€λͺ… μ°Έμ‘°
      - web1                   πŸ”΄ (23.01.02 μΆ”κ°€)μ•„λž˜ μ„€λͺ… μ°Έμ‘°
      - web2                   πŸ”΄ (23.01.02 μΆ”κ°€)μ•„λž˜ μ„€λͺ… μ°Έμ‘°
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
      - ./../../vnstatdb:/var/lib/vnstat
    environment:
      - HTTP_PORT=8685
      - HTTP_BIND=* 
      - HTTP_LOG=/dev/stdout
      - LARGE_FONTS=0
      - CACHE_TIME=1
      - RATE_UNIT=1
      - PAGE_REFRESH=0

πŸ”΄βœ¨βœ¨πŸ”΄ μ΅œκ·Όμ— μ•Œκ²Œ λ˜μ—ˆλ„€μš”. vnstatμ—μ„œ 싀행쀑인 μ»¨ν…Œμ΄λ„ˆ 쀑 λͺ‡κ°œκ°€ 보이지 μ•ŠλŠ”λ‹€λŠ” μ‚¬μ‹€μ„μš”. 이유λ₯Ό 확인해 λ³΄λ‹ˆ, μ—¬λŸ¬ μ»¨ν…Œμ΄λ„ˆκ°€ μƒμ„±λ λ•Œ vnstat μ»¨ν…Œμ΄λ„ˆ 생성 이후에 μƒμ„±λ˜λŠ” λ‹€λ₯Έ μ»¨ν…Œμ΄λ„ˆλ“€μ€ 보이지 μ•ŠλŠ”λ‹€λŠ” μ‚¬μ‹€μ„μš”. κ·Έλž˜μ„œ vnstat μ»¨ν…Œμ΄λ„ˆλ₯Ό 맨 λ§ˆμ§€λ§‰μ— μƒμ„±λ˜λ„λ‘ ν•˜μ˜€λ”λ‹ˆ 이제 λͺ¨λ‘λ‹€ 잘 λ³΄μ΄λ„€μš”. depends_on λͺ…λ ΉμœΌλ‘œ λ‹€λ₯Έ μ»¨ν…Œμ΄λ„ˆκ°€ λͺ¨λ‘ μƒμ„±λœ 후에 vnstatκ°€ μƒμ„±λ˜λ„λ‘ ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

(ν•œκ°€μ§€ 더) μ»¨ν…Œμ΄λ„ˆλ“€μ„ μž¬μƒμ„± ν•˜κ²Œλ˜λ©΄, vnstat μ—μ„œλŠ” 이전 μ»¨ν…Œμ΄λ„ˆλ“€ 결과만 보여 μ œλŒ€λ‘œ μž‘λ™μ΄ λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ΄λ•ŒλŠ” μ»¨ν…Œμ΄λ„ˆ μž¬μƒμ„± 전에, vnstat의 λ³Όλ₯¨μΈ vnstatdbλ₯Ό λ¨Όμ € μ‚­μ œ ν›„ μž¬μƒμ„±ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€.

 

 

 

4. λ‘œμ»¬μ—μ„œ git push λͺ…령을 μ€€ ν›„ μžλ™ 배포가 μ™„λ£Œλ˜λ©΄ 8685 ν¬νŠΈμ—μ„œ μ•„λž˜μ™€ 같은 화면을 λ³Ό 수 있음.

 

5. μœ„ μ›ΉνŽ˜μ΄μ§€μ—μ„œ veth541c59fλŠ” nginx_cnameμ»¨ν…Œμ΄λ„ˆλ₯Ό μ˜λ―Έν•˜μ—¬, veth31c168eλŠ”  nginx_cname2μ»¨ν…Œμ΄λ„ˆλ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. 이 μž₯치의 이름을 쒀더 λ³΄κΈ°μ’‹κ²Œ λ§Œλ“€λ €λ©΄ μ•„λž˜μ™€ 같이 μž…λ ₯을 ν•΄μ£Όλ©΄ λ©λ‹ˆλ‹€. (μ‹€ν–‰ 경둜 μœ„μΉ˜λŠ” μƒκ΄€μ—†μŒ)

docker exec vnstat vnstat -i veth541c59f --setalias "nginx_cname"
docker exec vnstat vnstat -i veth31c168e --setalias "nginx_cname2"

 

6. μœ„ veth****** 값듀이 μ–΄λ–€ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ˜λ―Έν•˜λŠ”μ§€λŠ” μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€κ°’κ³Ό μ„œλ²„μ˜ μ–΄λ–€ 값듀을 λΉ„κ΅ν•΄μ•Όλ§Œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό μ‰½κ²Œ 확인할 수 μžˆλŠ” 슀크립트λ₯Ό Micah CulpepperλΌλŠ” 뢄이 λ§Œλ“€μ–΄ λ†“μ•˜μœΌλ‹ˆ μ•„λž˜ 링크λ₯Ό 확인해 λ³΄μ‹œκΈ° λ°”λžλ‹ˆλ‹€. 참고둜 제 μ„œλ²„μ—μ„œ 확인을 해보면 μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€. (veth 값은 μ»¨ν…Œμ΄λ„ˆ μ‚­μ œ ν›„ λ‹€μ‹œ 생성할 경우 값이 λ³€ν•˜λ‹ˆ μ°Έκ³ ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.)

https://github.com/micahculpepper/dockerveth

 

GitHub - micahculpepper/dockerveth: Show which docker containers are attached to which veth interfaces on your server.

Show which docker containers are attached to which veth interfaces on your server. - GitHub - micahculpepper/dockerveth: Show which docker containers are attached to which veth interfaces on your s...

github.com

βœ… (μ°Έκ³ ) Ubuntuμ—μ„œ μœ„ dockervethλ₯Ό μ‚¬μš©ν•  경우, 슀크립트 첫쀄에 μžˆλŠ” '#!/bin/sh' λ₯Ό '#!/bin/bash'둜 λ°”κΎΈμ–΄μ•Ό 싀행이 λ©λ‹ˆλ‹€.

 


🍺🍺 μž‘μ—…ν•œ λͺ¨λ“  μ†ŒμŠ€λŠ” μ•„λž˜ λ§ν¬μ—μ„œ ν™•μΈν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€. πŸΊπŸΊ

https://github.com/mmssem/progstudy

 

GitHub - mmssem/progstudy

Contribute to mmssem/progstudy development by creating an account on GitHub.

github.com


🍺 λͺ©μ°¨ 🍺(λ³΄μ‹œλ €λ©΄ μ•„λž˜ λ”보기 λ₯Ό λˆŒλŸ¬μ£Όμ„Έμš”.)
더보기

1. Dockerλ₯Ό μ‚¬λž‘ν•˜κ²Œ 된 이유 (Docker+Nginx_proxy+SSL+Github action)

2. Docker μ„€μΉ˜ (Docker+Nginx_proxy+SSL+Github action)

3. MobaXterm (Docker+Nginx_proxy+SSL+Github action)

4. 도컀λ₯Ό μ΄μš©ν•˜μ—¬ μ„œλ²„μ— vnstat μ„€μΉ˜ 및 μ‚­μ œν•˜κΈ°(Docker+Nginx_proxy+SSL+Github action)

5. λ‘œμ»¬μ— nginx(μ›Ήμ„œλ²„) μ„€μΉ˜ν•΄λ³΄κΈ° (Docker+Nginx_proxy+SSL+Github action)

6. μ„œλ²„ μžλ™ 배포 (1) 둜컬 => github (Docker+Nginx_proxy+SSL+Github action)

7. μ„œλ²„ μžλ™ 배포 (2) μ„œλ²„μ— μžλ™ 배포λ₯Ό μœ„ν•œ runner μ„€μΉ˜

8. μ„œλ²„ μžλ™ 배포 (3) 둜컬 μ†ŒμŠ€ -> git push -> github -> μ„œλ²„ μžλ™ 배포 확인

9. (tip) git Add, Commit, push ν•œλ²ˆμ— ν•˜κΈ°

10. μ„œλ²„ μžλ™ 배포 (4) λ°°ν¬μ‹œ μ„œλ²„μ—μ„œ docker-compose.yml μžλ™ μ‹€ν–‰

11. μ„œλ²„μ— vnstat μ„€μΉ˜ (docker-compose.yml 이용)

12. μ„œλ²„μ— 도컀 μ„€μΉ˜μ‹œ network μ„€μ • λ³€κ²½ 사항 ν™•μΈν•˜κΈ°

13. nginx + php + mysql + phpmyadmin μ„€μΉ˜ν•˜κΈ°

14. Nginx - Reverse Proxy, Load Balancing κΈ°λŠ₯ ν™œμš©

15. λ‘œμ»¬μ—μ„œ 아이피 λŒ€μ‹  도메인λͺ… μ‚¬μš©ν•˜κΈ°(hosts μˆ˜μ •)

16. httpsλ₯Ό μ“°κΈ° μœ„ν•΄ λ‘œμ»¬μ—μ„œ SSL ν…ŒμŠ€νŠΈ ν•˜κΈ° (with mkcert)

17. μ„œλ²„μ— SSL μ μš©ν•˜κΈ° (docker + Let's Encrypt + wildcard μΈμ¦μ„œ + Cloudflare)

18. μ™€μΌλ“œμΉ΄λ“œ μΈμ¦μ„œ μžλ™ κ°±μ‹ (docker + Let's Encrypt + wildcard μΈμ¦μ„œ + crontab)

 

 

728x90
λ°˜μ‘ν˜•