도커 컨테이너 생명주기에 대해서 공부한 내용에 대해서 정리하려고 한다.
일반적으로 생명주기(Life Cycle)이라고 하면"어떤 기술이나 제품이 발표된 후에 다른 기술이나 제품에 의해 대체되는 때까지의 기간"이라고 한다.
이는 간단히 말해서 환경 변경, 버전에 따른 마이그레이션 등에 이유로 생명주기가 생기는 것이다.
위와 같은 형태로 생명 주기가 구성되는데, 다음과 같은 상태로 구분된다.
생성(Create):
생성 단계에서는 도커 이미지를 기반으로 컨테이너를 만든다, (이때, 도커 이미지에 정의된 파일 시스템과 설정을 포함하는 새로운 컨테이너가 생성됨)
시작(Start):
생성된 컨테이너를 시작하여 프로세스가 실행되도록 한다.
정지(Stop):
정지 단계에서는 실행 중인 컨테이너의 프로세스를 일시 중지시킨다. 컨테이너는 정지 상태로 전환되며, 필요에 따라 재시작할 수 있다.
삭제(Remove):
삭제 단계에서는 더 이상 필요하지 않은 컨테이너를 제거한다. 컨테이너가 삭제되면 해당 컨테이너의 파일 시스템과 설정 등이 제거되며, 해당 리소스가 해제된다.
이렇게 삭제되면 모든 설정이 쉽게 지워지게 때문에, 사람들은 Docker container를 다룰 때 파일을 유지하는 것이 어렵다라고 한다.
너네들이 잘못한거잖아!!
삭제를 하기 이전에 필요한 내용이 존재한다면 로컬로 마운트(mount)한 이 후에 삭제를 해야한다. 그래야 다른 컨테이너에 해당 내용을 다시 추가하여 지속성을 보장할 수 있기 때문이다.
보통 자신이 엄청 고생해서 컨테이너를 만들었는데, 이를 지운다는 것이 이해가 되지않을 수도 있다.
하지만 컨테이너는 영구적으로 사용되는 것이 아닌, 변경이 필요할 때 과감하게 내부 내용을 로컬에 마운트 한 이후에 삭제하고 새로운 컨테이너를 생성하여 로컬에 있는 내용을 그대로 올려서 사용할 수 있다. 이를 통해 간단하게 컨테이너를 관리할 수 있다.
mount와 transfer(copy)을 통해서 설정을 유지하면서 컨테이너를 옮길 수 있다. 이를 조금 더 전문적인 말로 지속성을 유지한다라고 말한다.
이정도가 간단한 docker container의 생명주기이다. 이 후에는 볼륨과 해당 생명주기 작업을 실습형태로 정리해볼 예정이다.