docker-compose syslog 대체

진웅·2025년 8월 19일

harbor

목록 보기
5/5

네, syslog 드라이버가 문제네요! Podman에서 syslog를 대체할 수 있는 안전한 드라이버들이 있습니다.

🔍 Podman 지원 로그 드라이버 확인

# Podman이 지원하는 로그 드라이버 확인
podman info | grep -A 20 "Log Drivers"

# 또는 직접 테스트
podman run --log-driver=json-file --rm hello-world 2>/dev/null && echo "✅ json-file 지원"
podman run --log-driver=journald --rm hello-world 2>/dev/null && echo "✅ journald 지원"

🔧 syslog 대체 방법들

방법 1: json-file로 교체 (가장 안전)

cd /opt/harbor

# docker-compose.yml에서 syslog를 json-file로 교체
sed -i 's/driver: "syslog"/driver: "json-file"/g' docker-compose.yml
sed -i 's/driver: syslog/driver: json-file/g' docker-compose.yml

# syslog 관련 옵션들 제거
sed -i '/syslog-address/d' docker-compose.yml
sed -i '/syslog-facility/d' docker-compose.yml
sed -i '/syslog-format/d' docker-compose.yml

# json-file 옵션 추가
sed -i '/driver: "json-file"/a\      options:\n        max-size: "200m"\n        max-file: "10"' docker-compose.yml

방법 2: journald로 교체 (RHEL/CentOS 권장)

cd /opt/harbor

# syslog를 journald로 교체 (systemd 환경에 최적)
sed -i 's/driver: "syslog"/driver: "journald"/g' docker-compose.yml
sed -i 's/driver: syslog/driver: journald/g' docker-compose.yml

# syslog 관련 옵션들 제거 후 journald 옵션 추가
sed -i '/syslog-/d' docker-compose.yml
sed -i '/driver: "journald"/a\      options:\n        tag: "{{.Name}}"' docker-compose.yml

방법 3: 완전한 로그 설정 교체 (권장)

cd /opt/harbor

# 완전한 로그 설정 교체 스크립트
cat > fix_syslog.py << 'EOF'
import re

# docker-compose.yml 읽기
with open('docker-compose.yml', 'r') as f:
    content = f.read()

# syslog 로그 설정을 json-file로 교체하는 패턴
syslog_pattern = r'logging:\s*\n\s*driver: ["\']?syslog["\']?\s*\n\s*options:\s*\n(?:\s*syslog-[^:]+:.*\n)*(?:\s*tag:.*\n)?'

json_file_replacement = '''logging:
      driver: "json-file"
      options:
        max-size: "200m"
        max-file: "10"
'''

# 교체
content = re.sub(syslog_pattern, json_file_replacement, content, flags=re.MULTILINE)

# 남은 syslog 드라이버들 단순 교체
content = re.sub(r'driver: ["\']?syslog["\']?', 'driver: "json-file"', content)

# syslog 관련 옵션들 제거
content = re.sub(r'\s*syslog-[^:]+:.*\n', '', content)

# 저장
with open('docker-compose.yml', 'w') as f:
    f.write(content)

print("✅ syslog를 json-file로 교체했습니다.")
EOF

python3 fix_syslog.py

🚀 즉시 실행 (가장 빠른 해결)

cd /opt/harbor

# 1. Harbor 중지
sudo -E docker-compose down 2>/dev/null || true

# 2. syslog를 json-file로 간단 교체
sed -i 's/driver: "syslog"/driver: "json-file"/g' docker-compose.yml
sed -i 's/driver: syslog/driver: json-file/g' docker-compose.yml

# 3. syslog 관련 옵션 제거
sed -i '/syslog-address/d' docker-compose.yml
sed -i '/syslog-facility/d' docker-compose.yml
sed -i '/tag: /d' docker-compose.yml

# 4. Harbor 시작
sudo -E docker-compose up -d

# 5. 상태 확인
sudo -E docker-compose ps

📋 각 로그 드라이버 특징

1. json-file (가장 안전)

logging:
  driver: "json-file"
  options:
    max-size: "200m"
    max-file: "10"
  • ✅ 모든 환경에서 지원
  • ✅ 로그 로테이션 지원
  • docker-compose logs 정상 동작

2. journald (RHEL/CentOS 최적)

logging:
  driver: "journald"
  options:
    tag: "{{.Name}}"
  • ✅ systemd 환경에 최적화
  • journalctl로 로그 확인 가능
  • ✅ 시스템 로그와 통합

3. none (로그 비활성화)

logging:
  driver: "none"
  • ✅ 성능 최적화
  • ❌ 로그 확인 불가

🔍 수정 후 확인

cd /opt/harbor

# 1. 수정된 로그 설정 확인
grep -A 5 "logging:" docker-compose.yml

# 2. syslog 관련 설정이 남아있는지 확인
grep -i syslog docker-compose.yml && echo "❌ syslog 설정 남음" || echo "✅ syslog 설정 제거됨"

# 3. Harbor 시작
sudo -E docker-compose up -d

# 4. harbor-portal 컨테이너 확인
sudo -E docker-compose ps | grep portal

# 5. 로그 테스트
sudo -E docker-compose logs harbor-portal | tail -10

🎯 RHEL 환경 권장 설정

RHEL 환경이라면 journald가 가장 적합합니다:

cd /opt/harbor

# journald로 설정 (RHEL 최적화)
sed -i 's/driver: "syslog"/driver: "journald"/g' docker-compose.yml
sed -i '/syslog-/d' docker-compose.yml

# Harbor 시작
sudo -E docker-compose up -d

# journald로 로그 확인
sudo journalctl -u podman -f

가장 안전하고 빠른 방법syslog → json-file 교체입니다! 🚀

profile
bytebliss

0개의 댓글