Bae's Digital Dialogues

도커[Docker] 컨테이너의 라이프사이클(Lifecycle) 본문

Docker

도커[Docker] 컨테이너의 라이프사이클(Lifecycle)

배디훈 2024. 5. 24. 05:04

실행 중인 컨테이너의 로그를 확인할 수 있는 명령어이다.

$docker logs(컨테이너명) #컨테이너의 로그 조회

 

 

먼저 도커 create 명령을 사용해서 컨테이너를 생성 상태로 만들어보자

$docker create --name tencounter devwikirepo/tencounter #컨테이너를 created 상태로 생성

 

 

이미지를 다운 받은것을 확인할 수 있다.

 

 

 

docker ps-a를 통해서 컨테이너를 확인해 보면 이렇게 10 카운터가 create상태라는 것을 확인할 수 있다.

 

 

지금 상태에서는 CPU나 메모리를 사용하지 않고 오로지 격리된 공간만 만들어진 상태인것이다.

 

 

이제 이 상태에서 start 명령을 사용해서 tencounter를 실행해 보자

$docker start tencounter #컨테이너를 실행

 

 

 

실행하고 나서 docker ps -a로 확인해 보면 이렇게 실행 중인 상태인 up인 것을 확인할 수 있다

그런데 이 tencounter는 10초 뒤에 종료되기 때문에 조금 기다렸다가 다시 docker ps -a 명령으로 확인해 보면 이 컨테이너가 Exited, 종료된 상태인 것을 확인할 수 있다.

 

 

 

이 내부에서 실행 중인 프로세스가 10초 뒤에 종료된 상태인 것이다.

 

 

그럼 이제 다시 docker start 명령을 입력해보자

$docker start -i tencounter #컨테이너를 실행 및 출력 연결

 

-i 옵션을 추가하면 컨테이너를 실행함과 동시에 컨테이너의 출력을 바로 터미널로 연결할 수 있다.

 

 

이렇게 컨테이너가 실행되면서 로그가 출력되는 것을 확인할 수 있다.

 

 

정확히 10까지만 출력되고 프로세스가 종료되는 걸 확인할 수 있다.

 

 

그리고 다시 docker ps -a로 컨테이너를 확인해 보면 역시 컨테이너가 종료된 상태인 것을 확인할 수 있다.

 

 

그리고 이제 docker rm 명령으로 tencounter를 삭제해보자

$docker rm tencounter #실습 컨테이너 삭제

 

 

정상적으로 삭제가 되었다.

 

 

다음으로 hundredcounter로 실습을 해보자

 

hundredcounter를 실행해 보자

$docker run --name hundredcounter devwikirepo/hundredcounter #실습용 컨테이너 실행

 

 

 

이번에는 -d 옵션을 주지 않았기 때문에 이렇게 1부터 100까지 출력되는 것을 확인할 수 있다.

 

 

 

그러면 이상태에서 docker pause 명령을 사용해 실행 중인 컨테이너를 정지해 보자

$docker pause hundredcounter #실습용 컨테이너 일시정지

 

 

이렇게 38까지 출력된 상태에서 1이 정지된 것을 확인할 수 있다. 이 상태에서는 CPU는 사용하지 않지만 상태가 메모리에 그대로 저장되어 있기 때문에 메모리는 사용하는 상태이다.

 

 

 

 

여기서 다시 docker unpause 명령을 입력해보자

$docker unpause hundredcounter #실습용 컨테이너 재실행

 

 

 

 

다시 정지된 상태에서 그대로 시작되는 것을 확인할 수 있다.

 

 

 

이제 stop을 활용해 보자

$docker stop hundredcounter #실습용 컨테이너 정지

프로세스의 종료 명령을 전달하고, 이 종료 명령이 실행 중인 프로세스면 정확히 10초 뒤에 종료된다.

 

 

 

이렇게 stop 명령을 실행하고 10초가 지난 뒤에 프로세스가 종료되는 것을 확인할 수 있다.

 

 

 

 

docker ps -a 명령으로 컨테이너의 목록을 출력하면 이렇게 hundredcounter가 종료된 것을 확인할 수 있다.

 

 

이번에는 컨테이너를 재실행해 보자

$docker start -i hundredcounter #실습용 컨테이너 재시작 및 터미널 연결

 

 

 

i 옵션을 주면 실행되면서 터미널로 바로 연결이 되기 때문에 1부터 출력이 된다. stop된 상태에서 start를 다시 했기 때문에 완전히 처음부터 실행되는 것을 확인할 수 있다.

 

 

이번에는 다시 아래 셀로 와서 이 컨테이너를 리스타트 해보자

$docker restart hundredcounter #실습용 컨테이너 재시작 및 터미널 연결

 

 

 

 

이 명령도 마찬가지로 재시작 명령이기 때문에 10초 뒤에 컨테이너가 재시작되는 것을 확인할 수 있다.

 

 

 

재시작이 되었기 때문에 기존에 연결되어 있던 셀은 종료가 된 상태이고, 빠ㅕ나온 상태에서 docker ps 명령을 사용해 보면 이번에는 이 hundredcounter가 Up상태인 것을 확인할 수 있다.

 

 

이제 실행 중인 컨테이너의 로그를 확인해 보자

$docker logs hundredcounter #실습용 컨테이너의 로그 확인

 

 

 

이렇게 로그를 출력할 수 있다. 아까 45 상태에서 리스타트가 되었기 때문에 로그가 45까지 남아있는 것을 확인할 수 있다.

그리고 리스타트를 했기 때문에 다시 1부터 출력이 되는 것을 확인할 수 있다.

 

 

그런데 이 로그 명령은 일회성 출력이기 때문에 한 번만 출력되고 종료된다. 

 

 

 

이 로그를 지속적으로 터미널에 띄우려면 docker logs에 -f 옵션을 추가해서 로그를 계속적으로 출력할 수 있다.

$docker logs -f hundredcounter #실습용 컨테이너의 로그를 터미널로 연결(실시간 로그 확인)

 

 

 

 

그러면 이제 컨테이너를 docker rm -f 명령을 사용해서 삭제해보자

$docker rm -f hundredcounter #실습 컨테이너 삭제

 

 

삭제가 완료되었다.