1. 배경
Docker에서 실행 중인 컨테이너를 아예 중지시키는 것 말고, 잠깐 멈추는 것을 할 수 있습니다. Docker에서 실행 중인 작업을 잠깐 멈췄다가, 다시 재개하고 싶은 경우 사용합니다. 아래에서 자세히 알아보겠습니다.
2. 사용법
docker pause [콘테이너] # [콘테이너]의 실행을 멈춤
docker unpause [콘테이너] # [콘테이너]의 실행을 재개
위와 같은 명령을 통해 컨테이너의 실행을 잠깐 멈췄다가, 다시 재개시킬 수 있습니다. [컨테이너] 부분에는 컨테이너의 ID나 컨테이너 이름을 작성해주시면 됩니다.
3. docker stop과 차이점
docker stop은 해당 컨테이너에서 실행되는 모든 프로세스를 KILL 하는 반면, docker pause는 컨테이너에서 실행되는 프로세스를 잠깐 중단(SIGSTOP) 시킵니다. SIGSTOP은 일시 정지 signal이며, SIGCONT로 재개되는 프로그램이 실행 중이었다면, docker unpause로 docker 컨테이너를 재개시킬 수 있습니다. SIGSTOP과 SIGCONT는 리눅스의 signal부분으로, 쉽게 일시 중지와 재개로 생각하시면 되겠습니다.
1) docker pause/unpause 실습
# 0부터 9까지 1초에 1개씩 출력하는 python command
docker run -it --name test1 python python -c "import time
for i in range(10):
time.sleep(1)
print(i)"
# 중지
docker pause test1
# 재개
docker unpause test1
docker run 명령을 통해 test1이라는 python기반 컨테이너를 생성하고, python -c를 통해 큰따옴표("") 내부의 코드를 실행하도록 하였습니다. 내부 코드의 내용은 time 라이브러리를 통해, 0부터 9까지 for문을 돌며 1초에 하나씩 출력하는 코드입니다. 터미널을 2개 띄워, 오른쪽 터미널에선 1초에 1개씩 출력하도록 하고, 왼쪽 터미널에선 docker pause를 통해 해당 프로그램을 잠깐 멈췄다가, docker unpause를 통해 다시 재개하는 실습입니다.
* 출력
4. 결론
간혹 오래 걸리지만 중지 및 재개를 할 수 있는 스크립트가 동작할 때, 부득이하게 docker를 중지해야 하는 경우가 있을 수 있습니다. 이런 경우 docker pause/unpause는 유용할 수 있습니다. 일시 정지 및 재개를 할 수 있는지 여부는 리눅스의 SIGSTOP, SIGCON signal에 의해 해당 스크립트가 중지 및 재개가 가능한지를 확인하면 됩니다.
읽어주셔서 감사합니다.
다음에 더욱 재미있고 유익한 글로 찾아오겠습니다.
Reference)
1. Docker Logo: https://www.docker.com/
'Server > Docker' 카테고리의 다른 글
[Docker] docker 디스크 사용 상태 확인 (docker system df) (0) | 2022.07.05 |
---|---|
[Docker] 컨테이너(Container) 종료없이 나가기(detach) (0) | 2022.06.30 |
[Docker] docker run 명령어 개념 [주요 옵션 설명] (2) | 2022.06.28 |