[docker] 도커 컨테이너의 생명주기

현서황·2024년 10월 20일

Docker

목록 보기
5/9

생명주기


생성, 시작, 실행

지금까지는 docker run<이미지 이름>으로 컨테이너 생성,실행을 했는데, 이것을 docker create와 docker start로 쪼개서 볼 수 있다.

docker run는 파일 스냅숏을 하드디스크로 옮기고, 시작 시 실행할 명령어를 컨테이너에서 실행시켜주는 두 역할을 모두 수행한다.
하지만, docker create는 파일 스냅샷만 하드디스크로 옮겨주고, docker start는 시작 시 실행할 명령어만 컨테이너 내에서 실행시켜준다.


중지

docker stopdocker kill로 중지할 수 있다.

stop과 kill은 둘 다 실행중인 컨테이너를 중지시키는 역할을 수행한다.
하지만,
1. Stop은 Gracefully하게 중지시킨다.
자비롭게 그동안 하던 작업들을 완료하고 컨테이너를 중지시킨다.
예를 들어, 메시지를 보내고 있었다면, 보내던 메시지는 다 보내고 컨테이너를 중지시킨다.
2. Kill은 Stop과 달리 어떠한 것도 기다리지 않고 바로 컨테이너를 중지시킨다.


kill은 SIGTERM이 없다.


먼저 실행시킨 뒤,

docker ps로 아이디나 이름을 알아내어 docker stop <NAMES>명령어를 쳤다.
바로 중지되지 않고, 특정 시간이 지난 후에 종료된다.

kill은 명령어가 입력되는 순간 바로 종료된다.


삭제

docker rm <중지할 컨테이너 아이디/이름>

삭제된 것을 확인할 수 있다.

  • 실행중인 컨테이너는 먼저 중지한 후에 삭제가 가능하다.

모든 컨테이너를 삭제하고싶다면?

docker rm \`docker ps -a -q\`


윈도우의 powerShell에서는 백틱을 지원하지 않아서 $()로 수행했다.

이미지를 삭제하고 싶다면?
docker rmi <이미지 id>

한 번에 사용하지 않는 컨테이너, 이미지, 네트워크 모두 삭제하고 싶다면?
docker system prune

도커를 쓰지 않을 때 모두 정리하고싶다면, 위의 docker system prune 명령어를 사용하면 된다.
하지만 이것도 실행 중인 컨테이너에는 영향을 주지 않음!

profile
노는 게 제일 좋은 뽀로로

0개의 댓글