Docker를 사용하여 애플리케이션을 실행할 때 중요한 것 중 하나는 컨테이너 로그를 확인하는 방법입니다. 이 로그는 애플리케이션이 정상적으로 실행되는지, 오류가 있는지, 또는 컨테이너 내 서비스가 성공적으로 활성화되었는지 확인하는 데 매우 유용합니다.
이 예제에서는 특정 컨테이너 이름을 사용하지 않습니다. 따라서 일반적인 형식을 사용하세요:
nama-container
또는 더 쉽게 이해하려면 컨테이너 이름이 다음과 같다고 가정하세요:
nama-proyek
나중에 nama-proyek를 자신의 Docker 컨테이너 이름으로 바꾸면 됩니다.
실행 중인 컨테이너 이름을 확인하려면 다음을 사용하세요:
docker ps
NAMES 부분을 확인하세요. 그것이 Docker logs 명령어에 사용할 컨테이너 이름입니다.
1. 컨테이너 로그 확인하기
컨테이너의 로그를 보려면 다음 명령어를 사용하세요:
docker logs nama-proyek
nama-proyek를 컨테이너 이름으로 바꾸세요.
일반적인 형식 예:
docker logs nama-container
이 명령어는 해당 컨테이너에서 기록된 로그를 표시합니다. 일반적으로 이 로그에는 애플리케이션이 시작될 때의 프로세스, 오류, 경고 또는 서버가 활성화되었다는 메시지와 같은 정보가 포함됩니다.
2. 실시간 로그 확인하기
로그를 실시간으로 또는 계속해서 보려면 -f 옵션을 추가하세요.
docker logs -f nama-proyek
-f 옵션은 follow를 의미합니다. 따라서 터미널은 컨테이너가 실행되는 동안 계속해서 최신 로그를 표시합니다.
이는 디버깅 중일 때 매우 유용합니다. 예를 들어 컨테이너를 재시작한 후, 애플리케이션을 업데이트한 후, 또는 웹사이트에 접속할 때 새로운 오류가 있는지 확인하려는 경우에 유용합니다.
실시간 로그 모드를 종료하려면 다음을 누르세요:
CTRL + C
이것은 터미널에서 로그 표시만 중단할 뿐 컨테이너를 중지하지 않습니다.
3. 마지막 로그만 확인하기
때로는 컨테이너 로그가 너무 길어질 수 있습니다, 특히 애플리케이션이 오래 실행된 경우. 마지막 몇 줄만 보고 싶다면 --tail을 사용하세요.
docker logs --tail=100 nama-proyek
위 명령어는 컨테이너 로그의 마지막 100줄을 표시합니다.
마지막 50줄을 보려면:
docker logs --tail=50 nama-proyek
마지막 로그를 보면서 새 로그를 계속 따라가고 싶다면 --tail과 -f를 결합할 수 있습니다.
docker logs --tail=100 -f nama-proyek
이 명령어로 Docker는 마지막 100줄을 표시한 다음 실시간으로 새 로그를 계속 표시합니다.
4. 시간별 로그 확인하기
Docker는 특정 시간을 기준으로 로그를 표시할 수도 있습니다. 예를 들어 지난 10분 동안의 로그만 보려면:
docker logs --since=10m nama-proyek
또는 지난 1시간:
docker logs --since=1h nama-proyek
특정 시간까지의 로그를 보려면 다음을 사용할 수 있습니다:
docker logs --until=10m nama-proyek
이 기능은 처음부터 모든 로그를 읽지 않고 최근에 발생한 오류를 찾는 데 집중하고 싶을 때 유용합니다.
5. 컨테이너에 접속하기
외부에서 로그를 보는 것 외에도, 때로는 파일, 폴더를 확인하거나 특정 명령어를 실행하기 위해 컨테이너 내부로 들어가야 할 필요가 있습니다.
다음 명령어를 사용하세요:
docker exec -it nama-proyek sh
일반적으로 가벼운 Linux 기반 컨테이너는 sh를 사용합니다.
Docker 이미지가 bash를 지원하는 경우 다음을 사용할 수도 있습니다:
docker exec -it nama-proyek bash
컨테이너에 접속한 후, 현재 폴더 위치를 확인하려면:
pwd
그런 다음 파일 및 폴더 목록을 보려면:
ls
더 자세히 보려면:
ls -la
6. 컨테이너 내부에서 애플리케이션 확인하기
컨테이너에 접속한 후, 애플리케이션에서 사용하는 포트의 localhost에 접근하여 애플리케이션이 실행 중인지 확인할 수 있습니다.
일반적인 형식은 다음과 같습니다:
wget -qO- http://localhost:PORT
PORT를 컨테이너 내에서 사용되는 애플리케이션의 내부 포트로 바꾸세요.
예:
wget -qO- http://localhost:8080
또는 컨테이너 내에 curl이 있는 경우:
curl http://localhost:PORT
예:
curl http://localhost:8080
애플리케이션이 정상적으로 실행되면 일반적으로 HTML, JSON 또는 특정 텍스트와 같은 응답이 나타납니다.
7. VPS 또는 호스트에서 애플리케이션 확인하기
컨테이너 내부뿐만 아니라 VPS 또는 호스트 서버에서 직접 애플리케이션을 확인할 수도 있습니다.
일반적인 형식:
curl http://localhost:PORT
PORT를 VPS에서 열린 포트 또는 Docker 포트 매핑으로 바꾸세요.
예:
curl http://localhost:8080
Docker를 사용하는 경우 컨테이너 포트가 호스트 포트에 매핑되었는지 확인하세요. 다음으로 확인할 수 있습니다:
docker ps
그러면 PORTS 부분이 표시됩니다, 예를 들어:
0.0.0.0:8080->8080/tcp
이는 VPS의 포트 8080이 컨테이너 내부의 포트 8080으로 연결된다는 의미입니다.
8. 컨테이너 이름 확인하기
컨테이너 이름이 확실하지 않은 경우 다음을 실행하세요:
docker ps
이 명령어는 실행 중인 컨테이너 목록을 표시합니다.
중지된 컨테이너를 포함하여 모든 컨테이너를 보려면:
docker ps -a
그러면 NAMES 부분을 확인할 수 있으며, 그 이름을 docker logs 명령어에 사용하세요.
예:
docker logs nama-container
9. 간단한 디버깅 흐름 예제
일반적으로 Docker 애플리케이션에 문제가 있을 때는 먼저 컨테이너를 확인하는 것부터 시작할 수 있습니다.
먼저 컨테이너가 실행 중인지 확인합니다:
docker ps
그런 다음 마지막 로그를 확인합니다:
docker logs --tail=100 nama-proyek
실시간으로 모니터링하려면:
docker logs -f nama-proyek
컨테이너에 접속해야 한다면:
docker exec -it nama-proyek sh
그런 다음 애플리케이션 폴더를 확인합니다:
pwd
ls -la
그런 다음 애플리케이션이 내부 포트에서 응답하는지 확인합니다:
wget -qO- http://localhost:PORT
또는:
curl http://localhost:PORT
결론
Docker 컨테이너 로그를 보려면 가장 기본적인 명령어는 다음과 같습니다:
docker logs nama-proyek
실시간 로그를 보려면:
docker logs -f nama-proyek
로그의 마지막 부분만 보려면:
docker logs --tail=100 nama-proyek
그리고 컨테이너에 접속해야 한다면:
docker exec -it nama-proyek sh
이 몇 가지 간단한 명령어만으로 Docker에서 애플리케이션 상태를 확인하고, 오류를 찾고, 실행 중인 프로세스를 확인하며, 컨테이너 내 서비스가 정상적으로 활성화되었는지 확인할 수 있습니다.
저자
Wilan
발리 아일랜드 테크노(Bali Island Tekno)의 정기 기고자로, 기술, 프로그래밍, 소프트웨어 엔지니어링 분야에 대한 지식을 적극적으로 공유하고 있습니다.