도커 컨테이너는 ‘쓰고 버리는’ 일회용품
컨테이너에 대한 설명을 듣다 보면 ‘컨테이너의 수명’ 또는 ‘컨테이너의 생애주기’라는 이야기가 반드시 나오게 된다. 그 이유는 컨테이너는 ‘쓰고 버리는’ 일회용품 같은 것이기 때문이다.
컨테이너는 쉽게 만들 수 있다. 그러므로 컨테이너 하나를 업데이트하면서 계속 사용하기보다는 업데이트된 소프트웨어가 들어있는 새로운 컨테이너를 사용하는 것이 좋다.
즉, 새로운 버전이 나오면 새로운 컨테이너로 갈아타는 것이다.
이것이 가능한 이유는 컨테이너는 일반적으로 여러 개를 동시 가동하는 상황을 전제로 하기 때문이다. 여러 개의 컨테이너를 하나하나 업데이트하려면 많은 수고가 든다. 초기 구축은 간단히 마쳤는데 유지보수할 때마다 컨테이너를 일일이 업데이트하려니 컨테이너의 장점이 반감된다. 유지보수 횟수가 훨씬 많은 것도 그렇다.
이러한 이유로 오래된 컨테이너를 버리고 새로운 이미지로부터 새로운 컨테이너를 만들어 갈아타는 방식을 사용한다. 이런 방법을 사용하면 수고를 크게 덜 수 있다.
이렇듯 컨테이너를 ‘만들고’, ‘실행하고’, ‘종료하고’, ‘폐기한’ 다음, 다시 컨테이너를 ‘만드는’ 일련의 과정을 ‘컨테이너의 생애주기’라고 부른다.
데이터 저장
컨테이너를 폐기했다면 컨테이너에 들어있던 데이터는 어떻게 될까?
컨테이너를 폐기하면 해당 컨테이너 안에서 편집했던 파일은 당연히 사라진다. 이 파일은 컨테이너 안에 들어있었기 때문이다.
이런 일을 방지하기 위해 보통은 도커가 설치된 물리적 서버(호스트)의 디스크를 마운트해 이 디스크에 데이터를 저장한다.
마운트는 ‘디스크를 연결해 데이터를 기록할 수 있도록 한 상태’를 의미하는데, 예를 들어 우리가 매일 사용하는 클라이언트 컴퓨터에 외장 USB 메모리나 HDD를 연결하듯이 도커 컨테이너도 물리적 컴퓨터의 디스크(HDD 또는 SSD)를 연결해 데이터를 기록할 수 있다.
이런 방법으로 컨테이너가 폐기되더라도 데이터는 컨테이너 외부에 안전하게 저장되어 사라지지 않는다. 최악의 경우 도커 엔진 자체에 무슨 일이 생기더라도 데이터는 그대로 보존된다. PC가 망가질 때를 대비해 외부에 데이터를 저장하는 것과 같은 이치다. 그리고 데이터를 이렇게 외부에 저장하면 다른 컨테이너와 데이터를 공유할 수도 있어서 매우 편리하다.
‘일회용품 같은 컨테이너’의 개념을 다시 설명하자면 다음과 같다.
운영체제나 소프트웨어 부분은 컨테이너 형태로 만들었다가 쓰고 버리는 것을 반복하고, 데이터는 다른 곳에 저장해두고 같은 것을 계속 사용한다고 보면 된다. 설정 파일도 마찬가지다. 파일을 수정했다면 삭제되지 않을 곳에 저장한다.
그러나 프로그램을 개발할 때는 다른 저장소에 저장하지 않는 경우도 있으므로 컨테이너를 폐기하기 전에 중요한 데이터가 컨테이너에 포함돼 있지 않은지 확인해야 한다.