앞으로, 학습한 내용이나 트러블 슈팅 등에 대해 정리해보겠습니다!
- 어떤 문제가 혹은 어떤 오류들이 있었는지
- 내가 시도해본 것들
- 어떻게 해결했는지
- 뭘 새롭게 알았는지
우선,
컨테이너 관리(Docker Compose), 컨테이너 모니터링과 컨테이너 로깅에 대해 알아보자.
Dockerfile
앱을 컨테이너로 만들 때 이미지를 만드는 용도로 사용함
dockerfile를 build하여 docker image를 만들고, 이를 run하여 docker cotainer를 생성
1. Docker Compose 사용
GitHub - nbcdocker/spring-boot-sample
Contribute to nbcdocker/spring-boot-sample development by creating an account on GitHub.
github.com
- 프로젝트 clone
cd ~
git clone https://github.com/nbcdocker/spring-boot-sample
- Windows에서 Docker Desktop 실행
: 실행하지 않고 docker-compose 실행하면 Docker Compose 설정과 Docker 데몬과의 연결 문제 발생
unable to get image 'nginx:latest': error during connect: Get "http://%2F%2F.%2Fpipe%2FdockerDesktopLinuxEngine/v1.47/images/nginx:latest/json": open //./pipe/dockerDesktopLinuxEngine: The system cannot find the file specified.
- docker-compose 실행
cd ~/spring-boot-sample
docker-compose up -d
docker-compose logs -f
- -d : detached 모드, 컨테이너를 백그라운드에서 실행하여 터미널을 다른 작업에 사용할 수 있음
- -f : follow, 로그를 실시간 출력, 로그 업데이트마다 새로운 로그 항목 출력
- intelliJ에서 해당 프로젝트 열어 build 및 test 확인, application 실행
- http://localhost:8080/ 와 http://localhost:8080/test-cache이 정상 작동하는지 확인
- http://localhost:8080/test-cached에서 5초 단위마다 캐시 적용 확인
- docker-compose 종료하고 application 재실행한 후, http://localhost:8080/test-cache 접속 가능한지 확
docker-compose down
2. Docker 모니터링 사용
- Docker Stats
- Docker에서 제공하는 모니터링 도구로, 컨테이너 ID, 이름, CPU 사용률, 메모리 사용량, 네트워크 I/O, 디스크 I/O 등 여러 정보 확인 가능하다.
- ubuntu22.02 terminal를 실행시키고 생성되어 있는 계정으로 로그인 및 비밀번호 입력
login minji
docker stats
exit
- htop
- 리눅스 시스템을 모니터링하는 도구로, 사용하기 편함
- 주요 기능 : 실시간 모니터링, 프로세스 관리, 사용자 친화 인터페이스
- 사용법
# 새로운 컨테이너 생성 및 실행
# -t: 가상 터미널 할당
# -i: 표준 입력 활성화
# ubuntu:22.04 : 사용할 docker 이미지 지정
docker run --name test-tools -ti -d ubuntu:22.04
# 이미 실행 중인 컨테이너 실행, 컨테이너 내 명령어 입력 환경 제공
docker exec -ti test-tools /bin/bash
apt update; apt upgrade -y; apt install htop -y;
htop
exit # OR F10 종료 가능
- apt: 리눅스에서 패키지 관리 도구
- -y 옵션: 사용자에게 확인 요청없이 자동으로 모든 변경사항 적용
3. Container 로깅
: Docker는 모든 컨테이너 로그의 출력과 에러를 캡쳐하여 json-file 로깅 드라이버를 사용하여 json 형식 파일로 기록
# --rm : 컨테이너 중지되면 자동 삭제
# 매초 현재날짜와 시간 출력
docker run --name logs-test --rm -d ubuntu:22.04 /bin/bash -c 'while true; do date; sleep 1; done'
docker logs logs-test
docker logs -f logs-test
'공부' 카테고리의 다른 글
Docker 실행 및 실습 (1) | 2025.03.06 |
---|---|
Http Session과 Session Clustering 개념 (0) | 2025.02.28 |
Redis Insight 연결 안되는 문제 해결(인메모리 저장소 및 캐싱 전략) (0) | 2025.02.27 |
# @Entity에서 @builder 사용법 (0) | 2025.02.21 |
Github와 AWS를 연동한 CI/CD 구현 (0) | 2025.02.11 |