MySQL 컨테이너에 있는 로그 마운트하기

2025. 2. 13. 12:02·데이터베이스/MySQL

 

글쓴이의 컴퓨터 환경은 다음과 같습니다.
사용기기: Macbook pro M1 pro 16GB
사용OS: macOS - Sequoia 15.3
사용 소프트웨어
- Docker Desktop: v4.38.0
- Docker: Docker version 27.5.1, build 9f9e405
- MySQL 컨테이너: mysql:8.0

호스트 머신의 /var/log/mysql 폴더를 만들고 거기다 MySQL 컨테이너에서 발생하는 로그들을 Bind Mount 하려고 했으나 다음과 같은 에러가 발생했었다.

/var가 아닌 다른 경로로 설정하는 것도 하나의 방법이었고, bind mounts 대신 volume mounts를 쓰는 것도 하나의 방법이었겠지만, 일반적으로 Linux에서 가지고 있는 /var 경로 안에서 폴더를 만들어 여기에 로그를 수집하는 방식이 시스템을 구상할 때 일관적으로 유지할 수 있었고 logrotate를 통해서 daily를 기준으로 로그를 나누기 위해서는 호스트 머신에서 명확하게 로그가 저장되어 있는 경로를 알고 있어야 했기에 방법을 계속 연구해보았다.

문제는 호스트 머신에서는 root 계정으로 폴더가 만들어져 있었고 이를 MySQL의 컨테이너가 작성하려고 하는 순간 Permission Denied가 떴었던 거였다. (MySQL 컨테이너가 호스트 머신에 root 계정으로 만들어진 폴더에 대해서 접근할 수 있는 권한이 없었기 때문에 생긴 문제)

그래서 /var/log/mysql에서 소유자를 도커 소켓을 실행하는 계정으로 바꾸고 여기서 해당 계정으로만 접근이 가능하게끔 chmod 700을 적용하였다.

그리고 나서 도커 컴포즈를 다시 실행해보니 로그를 정상적으로 받아오는 것을 확인할 수 있었다.

이후 호스트 머신에서 로그 파일들을 확인할 수 있었고 내용도 잘 작성되어 있는 것을 확인할 수 있었다.

참고 자료

 

Isolate containers with a user namespace

Isolate containers within a user namespace

docs.docker.com

 

Storage drivers

Learn the technologies that support storage drivers.

docs.docker.com

 

Bind mounts

Using bind mounts

docs.docker.com

 

저작자표시 비영리 (새창열림)
'데이터베이스/MySQL' 카테고리의 다른 글
  • Deep Dive into MySQL Health Check Mechanisms: From Access Denied Analysis to Privilege Minimization
  • MySQL 로깅 분할 방식에 대한 고찰
  • Autocommit은 언제 끄는 게 좋을까?
  • Connect Access denied for user 'root'@'localhost' (using password: NO) 문제 해결부터 권한 축소까지
gorae1201
gorae1201
다양한 문제를 해결하고 싶은 개발자의 자료 저장소
  • gorae1201
    서카이빙
    gorae1201
  • 전체
    오늘
    어제
    • 분류 전체보기 (19)
      • C++ (1)
        • 백준 (1)
      • 독서 (0)
        • 모던 자바스크립트 딥다이브 (0)
      • DevOps (3)
      • 자바스크립트 (1)
      • CS (3)
        • 네트워크 (3)
      • 데이터베이스 (7)
        • MySQL (6)
        • Redis (1)
      • 궁금했던 거 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    docker
    ci 파이프라인 개선
    이벤트 루프
    mysql 컨테이너 로그
    bind mound
    자바스크립트 비동기
    cloud canvas
    logrotate.conf
    5장
    나머지
    모던 자바스크립트 딥다이브
    redis daemonize
    4장
    terraform
    백준
    3052번
    github actions
    서드파티 쿠키
    3rd party cookies
    표현식과 문
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
gorae1201
MySQL 컨테이너에 있는 로그 마운트하기
상단으로

티스토리툴바