IT정보사전

[Docker] docker-compose를 이용한 컨테이너 로그 파일 백업 관리하기 본문

IT정보

[Docker] docker-compose를 이용한 컨테이너 로그 파일 백업 관리하기

작은나무0530 2024. 5. 30. 12:53
728x90
반응형

안녕하세요~ 작은나무입니다!
지난번 포스팅에서 도커 컨테이너 로그 파일 설정을 통해 서비스 저장 공간을 관리하는 방법에 대해 알아봤는대요~

스프링부트 프로젝트를 도커 컨테이너에서 서비스를 할 경우 로그를 확인하려면 컨테이너 내부에 접근해서 로그를 확인하거나 docker logs 명령어를 이용해서 로그를 확인할 수 있습니다.
하지만 서비스 운영을 하게 되면 지난 날짜의 로그 파일을 일정기간 보관하여 관리하기 때문에 도커 컨테이너 내부의 로그를 백업할 필요성이 있습니다.

기존 도커 컨테이너를 삭제하게 되면 지금까지의 로그 파일 데이터는 삭제되기 때문에 별도의 도커 볼륨을 이용해서 백업 관리하는 방법에 대해 알아보겠습니다.

도커 컨테이너 로그 파일은 /var/lib/docker/containers/ 경로에 저장되어 있고 접근하려면 root 계정이 필요합니다.

/var/lib/docker/containers/${CONTAINER_ID}/${CONTAINER_ID}-json.log

다만, 해당 로그를 확인해 보면 아래와 같이 JSON 형식으로 되어 있어서 가독성이 좋지 않은 것을 확인 하실 수 있습니다.

도커 컨테이너 내부에서 동작하는 로그를 확인해 보겠습니다.

~$ docker exec -it <컨테이너 ID> /bin/sh
cat /svc/log/debug.log
# /svc/log/debug.log는 스프링부트 로그 파일 위치

도커 컨테이너의 로그 파일 보다는 도커 컨테이너 내부에서 동작하는 로그가 가독성이 좋고 익숙합니다.
컨테이너 내부에서 동작하는 로그를 별도의 도커 볼륨을 생성해서 백업을 진행해 보도록 하겠습니다.

1. 도커 볼륨 생성하기
도커 볼륨을 생성하기 위해 docker volume create 명령어를 이용해서 아래와 같이 생성하고 확인합니다.

~$ docker volume create --name log_backup
~$ docker volume ls

2. docker-compose.yml 생성하고 EC2 인스턴스에 업로드
docker-compose.yml 파일을 생성하고 아래와 같이 volumns에 방금 생성한 도커 볼륨 이름과 컨테이너 내부 로그 파일 위치를 작성합니다.

services:
  web:
    container_name: dockertest
    image: smalltree0530/smalltree:latest
    ports:
      - 80:80
    volumes:
      - log_backup:/svc/log/

volumes:
  log_backup:
    external: true
    
# container_name : 도커 컨테이너 이름
# image : 생성한 이미지 이름
# volumes : 도커 볼륨 이름:컨테이너 내부 로그 파일 위치
# external : 외부 접근 가능 여부

내부 컨테이너에서 외부 도커 볼륨을 사용하려면 external:true 옵션을 필수로 작성해줘야 합니다.
작성한 docker-compose.yml 파일을 EC2 인스턴스에 업로드 합니다.

3. Docker Image 생성 및 Docker Hub Push
로그인 하신 후 생성한 Dockerfile의 경로로 이동해서 build하고 도커 이미지를 생성합니다.
※ Dockerfile 경로로 이동하지 않고 경로를 작성해도 됩니다.

# docker build -t #{DockerHub ID/#{Image Name} #{Dockerfile Path}
docker build -t smalltree0530/smalltree .

Docker Hub에 이미지를 올리기 위해  Docker commands의 push 명령어를 복사해서 실행합니다.
※ tagname은 입력하지 않아도 됩니다.

docker push smalltree0530/smalltree:tagname

4. docker-compose로 Docker Image 컨테이너
docker-compose를 이용해서 이미지를 가져오고 컨테이너화 하기 위해 아래 명령어를 실행합니다.

~$ docker-compose up -d
# -d : 백그라운드 실행

Docker Hub에 있는 이미지를 가져오고 컨테이너화 하여 서비스가 시작 된 것을 확인할 수 있습니다.
생성한 도커 볼륨의 실제 위치를 확인하기 위해 docker volumn inspect 명령어를 입력해서 실제 경로를 확인합니다.

~$ docker volume inspect log_backup

해당 경로로 이동해보면 도커 내부 로그 파일이 생성되어 있는 것을 확인 할 수 있습니다.

컨테이너를 중지하려면 아래의 명령어를 통해 중지할 수 있습니다.

~$ docker-compose down

지금까지 docker-compose를 이용한 컨테이너 로그 파일 백업 관리하는 방법에 대해 알아봤습니다.
감사합니다.

728x90
반응형
그리드형
Comments